使用 docer 应该尽量遵循 one process per container但是 node 挂了怎么办? 我尝试在容器内使用 Pm2,但是容器一起来就结束了, docker 容器至少需要保证有一个进程,如果没有就会退出.可是我使用pm2为什么不行呢?如果不能使用 pm2, docker run restart always 可以解决吗?
docker で pm2 を使用する場合、pm2 コマンドを pm2-docker コマンドに変更して、フォアグラウンドで実行できるようにする必要があります。また、docker で pm2 を使う必要はないと個人的に感じています。node プロセスがハングすると、該当するコンテナも停止してしまうので、docker コンテナを起動するときに、restart=always パラメータを追加して自動的に再起動します
以下を参照してください: pm2 公式 Web サイトの docker 統合ドキュメント
pm2 がフォアグラウンドで実行されていることを確認する必要があります。つまり、dockerfile の CMD または ENTRYPOINT で開始されたプロセスはデーモン モードで実行できません
コンテナーの実行時に使用する CPU コアの数を指定できます。コアを 1 つだけ割り当てる場合、CPU の基本的なスケジューリング単位は 1 つのコアのみであるため、複数の Node.js プロセスを起動する必要はありません。 1 つの Node.js プロセスを実行できることを意味します
docker で pm2 を使用する場合、pm2 コマンドを pm2-docker コマンドに変更して、フォアグラウンドで実行できるようにする必要があります。また、docker で pm2 を使う必要はないと個人的に感じています。node プロセスがハングすると、該当するコンテナも停止してしまうので、docker コンテナを起動するときに、restart=always パラメータを追加して自動的に再起動します
以下を参照してください: pm2 公式 Web サイトの docker 統合ドキュメント
pm2 がフォアグラウンドで実行されていることを確認する必要があります。つまり、dockerfile の CMD または ENTRYPOINT で開始されたプロセスはデーモン モードで実行できません
コンテナーの実行時に使用する CPU コアの数を指定できます。コアを 1 つだけ割り当てる場合、CPU の基本的なスケジューリング単位は 1 つのコアのみであるため、複数の Node.js プロセスを起動する必要はありません。 1 つの Node.js プロセスを実行できることを意味します