PM2是node进程管理工具,可以利用它来简化很多node应用管理的繁琐任务,如性能监控、自动重启、负载均衡等

    1. 使用简单
    2. 运维方便
    3. 自带监控

    缺点:

    1. 分布式下无法进行统一的运维
    2. 需要登录到机器内进行运维

    pm2和pm2-runtime之间的主要区别是

    • pm2-runtime是为Docker容器设计的,它将应用程序置于前台,从而使容器保持运行状态.
    • pm2专为在后台发送或运行应用程序的正常使用而设计.

    简单来说,容器的寿命就是CMD或entrypoint的寿命.
    例如
    Dockerfile

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

    在这种情况下,容器将在运行该进程后立即死亡.
    要解决此问题,您需要 pm2-runtime

    1. FROM node:alpine
    2. RUN npm install pm2 -g
    3. COPY . /app
    4. WORKDIR /app
    5. ENV NODE_ENV=development
    6. CMD [ "pm2-runtime", "start","/app/bin/www"]

    pm2 与 pm2-runtime - 图1

    nodemon