hazelcast docker 容器不能 运行 连续
hazelcast docker container can't run continuously
我构建了一个 hazelcast docker container.But 当我 运行 hazelcast 容器时,它只打印一些启动日志而没有真正 运行ning。
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 化某些应用程序时的常见问题。
据我所知,我没有在前景中看到 运行 hazelcast 的原生方式。然后你可以做的是修改server.sh。这样的话,修改就很简单了,只需要加一个wait
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
等待语句将等到 java 应用程序终止,然后 return,因此您的 run.sh 将 return,而您的 docker容器将退出。
试试看,它会起作用的!
我构建了一个 hazelcast docker container.But 当我 运行 hazelcast 容器时,它只打印一些启动日志而没有真正 运行ning。 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' 的淡褐色容器。
日志打印是:
问题是 server.sh
启动了 java 应用程序,但 运行 没有在前台运行。这意味着 server.sh 启动服务器,自行退出,因此您的 run.sh 脚本也会退出,并且 docker 认为工作已完成并退出,即使 hazelcast 仍然 运行宁。这是 docker 化某些应用程序时的常见问题。
据我所知,我没有在前景中看到 运行 hazelcast 的原生方式。然后你可以做的是修改server.sh。这样的话,修改就很简单了,只需要加一个wait
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
等待语句将等到 java 应用程序终止,然后 return,因此您的 run.sh 将 return,而您的 docker容器将退出。 试试看,它会起作用的!