大佬教程收集整理的这篇文章主要介绍了重新启动Play应用程序Docker容器会导致“此应用程序已在运行”-不会删除RUNNING_PID,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我根据答案和有关此问题的进一步工作,梳理出了一种解决方法。如果我按以下方式启动容器,则在(意外)停止/重新启动后它们将启动。冲突的RUNNING_PID文件不会阻止容器重新启动。
$ sudo docker run --restart=on-failure:5 -d \
--name container my_/container:latest \
sh -c "rm -f /var/run/play.pID && ./opt/bin/start \
-DpIDfile.path=/var/run/play.pID"
它的作用是删除包含进程ID的文件,该文件在运行二进制文件之前每次都使用选项放置在特定位置。
编辑:
在Github上正在讨论一个相关的问题,但是在另一种部署模式下(Typesafe
Activator UI,而不是Docker)。
我试图模拟系统重启,以验证Docker重启策略,该策略声明能够按照正确的顺序重新运行容器。
我有一个用Java编写的Play框架应用程序。
Dockerfile看起来像这样:
FROM ubuntu:14.04
#
# [Java8,...]
#
RUN chmod +x /opt/bin/playapp
CMD ["/bin/bash"]
我使用开始$ docker run --restart=always -d --name playappcontainer
"./opt/bin/playapp"
。
当我$ service docker stop && service docker restart
然后$ docker attach
playappcontainer
控制台告诉我:
Play server process ID is 7
This application is already running (Or delete /opt/RUNNING_PID file)
编辑:
当我按照Play文档的建议使用更改文件位置到/var/run/play.pid时,结果相同-Dpidfile.path=/var/run/play.pid
。
Play server process ID is 7
This application is already running (Or delete /var/run/play.pid file).
当我$ docker inspect playappcontainer
,它告诉我:
"State": {
"ExitCode": 255,"FinishedAt": "2015-02-05T17:52:39.150013995Z","Paused": false,"Pid": 0,"Restarting": true,"Running": true,"StartedAt": "2015-02-05T17:52:38.479446993Z"
},
虽然:
从$ docker
stop上的Docker参考
从Play框架文档中停止Play应用程序
以上是大佬教程为你收集整理的重新启动Play应用程序Docker容器会导致“此应用程序已在运行”-不会删除RUNNING_PID全部内容,希望文章能够帮你解决重新启动Play应用程序Docker容器会导致“此应用程序已在运行”-不会删除RUNNING_PID所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。