使用docer 應該盡量遵循one process per container但是node 掛了怎麼辦? 我嘗試在容器內使用Pm2,但是容器一起來就結束了, docker 容器至少需要保證有一個進程,如果沒有就會退出.可是我使用pm2為什麼不行?如果不能使用pm2, docker run restart always 可以解決嗎?
pm2 用在 docker 裡面的時候需要把 pm2 指令改成 pm2-docker 指令,這樣就可以在前台執行。而且我個人覺得沒有必要在 docker 中使用 pm2,如果 node 進程掛掉對應的容器也會停止運行,所以在啟動 docker 容器的時候添加 restart=always 參數就可以自動重啟了
可以參考:pm2官網的docker整合文件
你需要保證pm2在前台運行,也就是說dockerfile中的CMD或ENTRYPOINT中啟動的進程不能以daemon方式運行
在運行容器時可以指定使用CPU核心數,如果只是分配一個核心的話就沒有必要啟動多個Node.js進程,因為CPU基本調度單位是線程,只有一個核心意味著運行一個Node.js進程就可以
pm2 用在 docker 裡面的時候需要把 pm2 指令改成 pm2-docker 指令,這樣就可以在前台執行。而且我個人覺得沒有必要在 docker 中使用 pm2,如果 node 進程掛掉對應的容器也會停止運行,所以在啟動 docker 容器的時候添加 restart=always 參數就可以自動重啟了
可以參考:pm2官網的docker整合文件
你需要保證pm2在前台運行,也就是說dockerfile中的CMD或ENTRYPOINT中啟動的進程不能以daemon方式運行
在運行容器時可以指定使用CPU核心數,如果只是分配一個核心的話就沒有必要啟動多個Node.js進程,因為CPU基本調度單位是線程,只有一個核心意味著運行一個Node.js進程就可以