2014-10-07 35 views
9

我在docker容器中永遠啓動節點時遇到問題,如果我手動啓動工作,而不是Dockerfile中的相同命令,則在構建和啓動容器時退出。 在bash命令的工作:永久在碼頭集裝箱中起始節點的錯誤

docker run -it container_name bash forever start -c 'node --harmony' /my/path/app.js 

我試圖把命令Dockerfile但容器不啓動

CMD forever start -c 'node --harmony' /my/path/app.js 
+0

創建其開始爲你一個小bash腳本。這就是我們所做的。 – tkone 2014-12-12 19:48:21

+0

作爲替代,使用碼頭重新啓動始終策略 – milan 2015-08-20 14:46:06

+0

只是好奇,爲什麼永遠與碼頭使用?爲什麼不讓docker直接運行節點? – 2017-09-27 12:28:58

回答

20

Google Group discussion

Forever start script.js在後臺運行。要在前臺運行forever,請嘗試forever script.js

這會在前臺永遠開始,這正是Docker需要的。記住,只要CMD中定義的流程啓動並運行,容器就是「活着的」。由於永遠以守護進程開始,命令本身退出,並且docker也會退出。

CMD forever -c 'node --harmony' /my/path/app.js 
+3

請記住,目前有** [一個開放的問題](https://github.com/foreverjs/forever/issues/729)**,它可以防止永遠從前臺運行退出。 – Gaston 2015-12-09 19:55:49

0

嘗試使用數組語法:

CMD ["forever", "start", "-c", "node --harmony", "/my/path/app.js"] 
+0

不,同樣的問題,不工作 – hellb0y77 2014-10-07 14:42:06

-1

不起作用,我試着用2個命令:

CMD ["forever","start","-c","'node --harmony'","/my/path/app.js"] 

CMD ["forever","start","-c","node --harmony","/my/path/app.js"] 

如果在容器進入並啓動forever start -c 'node --harmony' /my/path/app.js作品

0

把你Dockerfile:

CMD forever app.js