Docker在启动时退出CMD

时间:2016-07-27 12:00:17

标签: docker playframework

我有一个运行play网络应用程序的docker镜像。在dockerfile中有CMD启动服务器并等待直到你按Ctrl + D退出。如果我这样做:

docker run -d  -i -v

它正常工作 - 启动服务器并等待ctrl + D.

然而,当我启动容器时,情况并非如此:

docker start -i

而是服务器自动停止:

--- (Running the application, auto-reloading is enabled) ---

[info] p.c.s.NettyServer - Listening for HTTP on /0:0:0:0:0:0:0:0:9000

(Server started, use Ctrl+D to stop and go back to the console...)


[success] Total time: 1 s, completed Jul 27, 2016 11:54:13 AM <--- this indicates that the server was stopped.

如何强制docker start不停止服务器?

1 个答案:

答案 0 :(得分:1)

docker容器在主进程完成时退出。如果没有洞察你的docker文件(我没有玩游戏框架的经验),你需要确保至少有一个进程保持活跃。

您有几个选择:

  • Docker Way
    尝试使用-it之类docker run -it <your framework image> bash来进入您正在启动的容器。这应该保持窗口打开,并允许您在容器中运行命令。
  • Docker“调试”方式
    尝试使用docker inspect <your container>(使用docker ps -a查找容器)命令来调查容器退出的原因。如果你有一个像start.sh这样的启动脚本,你可以尝试添加while true; do sleep 1000;来保持容器在退出之前调查它正在做什么。
  • 尝试使用已发布的泊坞窗图片之一,例如 - https://hub.docker.com/r/ingensi/play-framework/

P.S。我不能忘记你是docker的新手,并且混合了docker startdocker run命令。