【问题标题】:What's the difference between pm2 and pm2-runtime?pm2 和 pm2-runtime 有什么区别?
【发布时间】:2019-05-26 12:42:45
【问题描述】:

我一直在将一些在同一台机器上执行的项目转移到每个单独的 docker 上。我尝试在其中一个 docker 项目上使用 pm2 以确保如果出现问题(这是一个易变项目)服务将重新启动,并且一些示例要求 Dockerfile 使用 pm2-runtime 而不是 pm2 .我一直在寻找这两者的区别,但我找不到具体的东西,有人可以帮忙吗?

【问题讨论】:

    标签: docker docker-compose dockerfile pm2


    【解决方案1】:

    pm2 和 pm2-runtime 的主要区别是

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

    简单来说,容器的生命周期就是CMDentrypoint的生命周期。

    例如

    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 应用程序,例如:

    高应用程序可靠性流程的第二个流程回退 控制自动应用程序监控以使其始终保持健全和 高性能自动源地图发现和解析支持 此外,使用 PM2 作为容器和容器之间的层 应用程序带来了PM2强大的功能,如应用程序声明 文件、可定制的日志系统和其他强大的功能来管理您的 生产环境中的 Node.js 应用。

    docker-pm2-nodejs

    【讨论】:

      猜你喜欢
      • 2017-12-06
      • 2015-08-05
      • 2019-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-20
      • 2020-11-16
      • 2020-07-12
      相关资源
      最近更新 更多