我构建了一个淡褐色的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'。 日志打印是: 但是#docker ps'无法看到这个过程。 希望得到你的帮助。
答案 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容器将退出。 试试吧,它会起作用!