pm2和pm2-runtime有什么区别?

Rua*_*ich 9 docker pm2 dockerfile docker-compose

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

Adi*_*iii 38

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

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

简单来说,容器的寿命就是CMDor的寿命entrypoint

例如

文件

FROM node:alpine
RUN npm install pm2 -g
COPY . /app
WORKDIR /app
CMD [ "pm2", "start","/app/server.js"]
Run Code Online (Sandbox Code Playgroud)

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

为了解决这个问题,你有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"]
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

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

从文档

pm2-runtime 的目标是将您的应用程序包装到合适的 Node.js 生产环境中。它解决了在容器内运行 Node.js 应用程序时的主要问题,例如:

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

docker-pm2-nodejs