2016-07-27 117 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命令。