J'ai transféré certains projets qui s'exécutaient sur la même machine vers des dockers individuels chacun. J'ai essayé d'utiliser pm2
sur l'un de ces projets de docker pour vous assurer que le service redémarrerait en cas de problème (c'est un projet volatile) et certains des exemples exigent que le Dockerfile utilise pm2-runtime
au lieu de pm2
. J'ai cherché les différences de ces deux mais je n'ai pas trouvé quelque chose de spécifique, quelqu'un pourrait-il aider?
La principale différence entre pm2 et pm2-runtime est
En termes simples, la durée de vie du conteneur est la durée de vie de CMD
ou entrypoint
.
Par exemple
Dockerfile
FROM node:Alpine
RUN npm install pm2 -g
COPY . /app
WORKDIR /app
CMD [ "pm2", "start","/app/server.js"]
Dans ce cas, le conteneur mourra dès qu'il exécutera le processus.
Pour y faire face, vous avez 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"]
Comme le conteneur continue de fonctionner et qu'il alloue la session tty.
De la documentation
Le but de pm2-runtime est d'envelopper vos applications dans un environnement de production Node.js approprié. Il résout les problèmes majeurs lors de l'exécution des applications Node.js dans un conteneur comme:
Deuxième processus de secours pour une fiabilité élevée des applications Contrôle du flux de processus Surveillance automatique des applications pour la garder toujours saine et performante Découverte automatique de la carte source et prise en charge de la résolution De plus, l'utilisation de PM2 comme couche entre le conteneur et l'application apporte des fonctionnalités puissantes de PM2 comme la déclaration d'application fichier, système de journalisation personnalisable et d'autres fonctionnalités intéressantes pour gérer votre application Node.js dans l'environnement de production.