同じマシンで実行されているいくつかのプロジェクトを、それぞれ個別のドッカーに転送しています。これらのdockerプロジェクトの1つでpm2
を使用して、何かがうまくいかない場合(揮発性のプロジェクト)にサービスが確実に再起動するようにしました。また、いくつかの例ではpm2-runtime
pm2
の。私はこれら2つの違いを探していましたが、具体的なものを見つけることができませんでした。
Pm2とpm2-runtimeの主な違いは
簡単に言えば、コンテナの寿命はCMD
またはentrypoint
の寿命です。
例えば
Dockerfile
FROM node:Alpine
RUN npm install pm2 -g
COPY . /app
WORKDIR /app
CMD [ "pm2", "start","/app/server.js"]
この場合、コンテナはプロセスを実行するとすぐに死にます。
これに対処するには、pm2-runtime
FROM node:Alpine
RUN npm install pm2 -g
COPY . /app
WORKDIR /app
ENV NODE_ENV=development
CMD [ "pm2-runtime", "start","/app/bin/www"]
コンテナが実行を継続し、ttyセッションを割り当てます。
ドキュメントから
Pm2-runtimeの目標は、アプリケーションを適切なNode.js実稼働環境にラップすることです。次のようなコンテナ内でNode.jsアプリケーションを実行するときの主要な問題を解決します。
高いアプリケーション信頼性を実現する2番目のプロセスフォールバックプロセスフロー制御自動アプリケーションモニタリングにより、常に正常かつ高パフォーマンスを維持自動ソースマップの検出とサポートの解決ファイル、カスタマイズ可能なログシステム、および運用環境でNode.jsアプリケーションを管理するその他の優れた機能。