1
我使用的码头工人创造的tcServer实例,它是成功停止,当我做如何在Docker中重新启动tcserver实例?
./tcruntime-ctl.sh停止
然而,该实例并不成功,当我做重新启动
./tcruntime-ctl.sh运行
原因是,PID文件(PID = 1)仍然存在,不会被删除
请注意,我用的运行命令
我使用的码头工人创造的tcServer实例,它是成功停止,当我做如何在Docker中重新启动tcserver实例?
./tcruntime-ctl.sh停止
然而,该实例并不成功,当我做重新启动
./tcruntime-ctl.sh运行
原因是,PID文件(PID = 1)仍然存在,不会被删除
请注意,我用的运行命令
运行的tcServer实例作为前台进程如果错误很简单,就是有一个来自先前运行的遗留pidfile,解决方法是在调用tcruntime-ctl.sh
脚本之前删除pidfile。由于tcServer实例的生命周期与docker容器的生命周期相关,因此可以安全地假定pidfile中引用的进程先前已退出。你可以前exec
编写自己的脚本,清理荷兰国际集团tcruntime.sh
,或者附加类似以下内容:
#!/bin/sh
pidfile=$(dirname $0)/../logs/tcserver.pid
if [ -f $pidfile ] ; then
rm $pidfile
fi
也许你可以使用https://github.com/phusion/baseimage-docker避免PID 1 PB?你能展示一个复制器吗?码头运行--restart =总是会有帮助吗? Docker运行的文档https://docs.docker.com/engine/reference/commandline/cli/#run – user2915097
如果我执行'docker run --restart = always',它将在docker守护进程重新启动时重启容器。我不想那样。通过,你的意思是由复制者的方式? – meallhour
另一个选项可能是'ENTRYPOINT tcruntime-ctl.sh start && tail -f/dev/null'但是,这将运行tcserver作为后台进程,并且在这种情况下,如何确保容器在tcserver实例已停止? – meallhour