榛树docker集装箱不能连续运行

我build立了一个hazelcastdocker容器。但是当我运行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 run hazelcast:3.6.1”运行榛树容器。 日志是打印是: 在这里输入图像说明 但是“docker ps”看不到这个过程。 希望你的帮助。

问题是server.sh启动不在前台运行的java应用程序。 这意味着server.sh启动服务器,退出本身,所以你的run.sh脚本也会退出,docker认为工作已经完成并退出,即使hazelcast仍在运行。 在docker化某些应用程序时,这是一个常见的问题。

据我所知,我没有看到在前台运行榛子的本地方式。 你可以做的是修改server.sh。 在这种情况下,修改非常简单,只需要在server.sh添加一个等待语句,在echo $! > ${PID_FILE}之后结束echo $! > ${PID_FILE} 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容器将退出。 尝试一下,它会工作!