What's the difference between pm2 and pm2-runtime?

一曲冷凌霜 提交于 2020-05-11 04:28:19

问题


I've been transferring some projects that have been executing on the same machine to individual dockers each. I've tried to use pm2 on one of these docker projects to make sure the service would restart if something go wrong (it's a volatile project) and some of the examples demands the Dockerfile to use pm2-runtime instead of pm2. I've been searching for the differences of these two but I couldn't find something specific, could someone help?


回答1:


The main difference between pm2 and pm2-runtime is

  • pm2-runtime designed for Docker container which keeps an application in the foreground which keep the container running,
  • pm2 is designed for normal usage where you send or run the application in the background.

In simple words, the life of the container is the life of CMD or entrypoint.

For example

Dockerfile

FROM node:alpine
RUN npm install pm2 -g
COPY . /app
WORKDIR /app
CMD [ "pm2", "start","/app/server.js"]

In this case, the container will die as soon as it run the process.

To deal with this, you have 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"]

As the container keeps running and it allocates tty session.

From the documentation

The goal of pm2-runtime is to wrap your applications into a proper Node.js production environment. It solves major issues when running Node.js applications inside a container like:

Second Process Fallback for High Application Reliability Process Flow Control Automatic Application Monitoring to keep it always sane and high performing Automatic Source Map Discovery and Resolving Support Further than that, using PM2 as a layer between the container and the application brings PM2 powerful features like application declaration file, customizable log system and other great features to manage your Node.js application in production environment.

docker-pm2-nodejs



来源:https://stackoverflow.com/questions/53962776/whats-the-difference-between-pm2-and-pm2-runtime

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!