2016-07-27 55 views
0

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

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. 

我怎样才能迫使码头工人开始不停的服务器?

回答

1

码头集装箱在主流程完成时退出。如果没有深入了解您的docker文件(我对play framework没有任何经验),您需要确保至少有一个进程保持活跃状态​​。

你有两个选择:

  • 泊坞路
    尝试使用-itdocker 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/

附:我不能放弃你对码头工人是新手的感觉,并正在混合docker startdocker run命令。