docker - pm2 和 pm2-runtime 有什么区别?

标签 docker docker-compose dockerfile pm2

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

最佳答案

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

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

  • 简单来说,容器的生命周期就是CMD的生命周期。或 entrypoint .

    例如

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

    在这种情况下,容器将在运行该进程后立即死亡。

    为了解决这个问题,你有 pm2 运行时
    FROM node:alpine
    RUN npm install pm2 -g
    COPY . /app
    WORKDIR /app
    ENV NODE_ENV=development
    CMD [ "pm2-runtime", "start","/app/bin/www"]
    

    enter image description here

    随着容器继续运行并分配 tty session 。

    从文档

    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

    关于docker - pm2 和 pm2-runtime 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53962776/

    相关文章:

    Docker:尝试使用本地 CircleCI 构建连接到 Docker Daemon 时权限被拒绝

    node.js - Deno:在Docker容器上写入CSV文件(权限被拒绝(操作系统错误13))

    php - xDebug 无法使用 docker、vscode 和 WSL 2

    docker - 在 Dockerfile 中使用 mount 命令时出错

    Docker swam 模式 - --advertise-addr 和 --listen-addr 之间有什么区别?

    docker - "docker container prune"和 "docker rm $(docker container ls -aq)"有什么区别

    mysql - 如何在dockerfile中还原MySQL数据库

    配置文件的 docker secret

    php artisan 迁移错误 : nodename nor servname provided or not know

    django - Docker compose 用于生产和开发