hazelcast docker容器不能连续运行

时间:2016-05-15 04:19:53

标签: docker hazelcast

我构建了一个淡褐色的docker容器。但是当我运行hazelcast容器时,它只打印一些没有真正运行的起始日志。 Dockerfile是:

#centos7_jdk7 is a centos7 operating system installing jdk7
FROM tianshangdeyun/centos7_jdk7
#hazelcast-3.6.1 is download from hazelcast offical site
COPY hazelcast-3.6.1 /hazelcast-3.6.1
#add start hazelcast script
COPY run.sh /run.sh
RUN chmod 777 /run.sh
expose 5701
CMD ["/run.sh"]

run.sh是:

#!/bin/bash
/hazelcast-3.6.1/bin/server.sh

我使用' docker运行hazelcast容器运行hazelcast:3.6.1'。 日志打印是: enter image description here 但是#docker ps'无法看到这个过程。 希望得到你的帮助。

1 个答案:

答案 0 :(得分:2)

问题是server.sh启动了不在前台运行的java应用程序。这意味着server.sh启动服务器,退出自身,因此run.sh脚本也会退出,而docker认为工作已完成并退出,即使hazelcast仍在运行。这是将某些应用程序停靠时的常见问题。

据我所知,我没有看到本地方式在前景中运行hazelcast。你可以做的是修改server.sh。在这种情况下,修改非常简单,您只需要添加等待server.sh

之后的echo $! > ${PID_FILE}中的声明
if [ -z "${PID}" ]; then
    echo "Process id for hazelcast instance is written to location: {$PID_FILE}"
    $RUN_JAVA -server $JAVA_OPTS com.hazelcast.core.server.StartServer &
    echo $! > ${PID_FILE}
    wait
else
    echo "Another hazelcast instance is already started in this folder. To start a new instance, please unzip 3.6.1.zip/tar.gz in a new folder."
    exit 0
fi

wait语句将一直等到java应用程序终止,然后返回,所以你的run.sh将返回,你的docker容器将退出。 试试吧,它会起作用!