pm2和pm2-runtime有什么区别?

时间:2018-12-28 18:22:26

标签: docker docker-compose dockerfile pm2

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

2 个答案:

答案 0 :(得分: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"]

enter image description here

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

从文档中

  

pm2-runtime的目标是将您的应用程序包装为适当的   Node.js生产环境。解决跑步时的主要问题   容器内的Node.js应用程序如下:

     

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

docker-pm2-nodejs

答案 1 :(得分:0)

PM2-流程管理器2

PM2是先进的Node.js工具集,对于大规模或基本的Node.js管理而言非常有利。它满足了在Node.js上大量投入并确定其创新开关的需求。

PM2中的主要描述:

  • 仪表板

如果您需要进行大量测量,则可能会遇到问题,无法向其中的许多人展示所需的方式。每个仪表板都是可调节的,它的每个部分都是可配置的(应用程序/服务器/测量等),并且可以在仪表板上的任何位置移动。

  • 警报

此组件是异常的反函数,您需要不时地对显式测量进行手动警告,使用此元素,您可以安排边缘和产生结果的活动,可以请求获取电子邮件,松弛消息或直接在应用程序上触发pm2活动(如pm2重新启动)。同样,如果您需要在创建条件下收集cpu或内存配置文件时,我们还增加了触发特定配置文件进入应用程序的可能性,它将分发并保留它供您稍后查看。

  • 日志

当前,PM2 Plus仅提供实时日志,您可以在其中实时识别正在发生的事情,而对于Enterprise,我们同样存储应用程序的日志,以便您以后在需要时可以将其检出,而没有令人信服的理由不再使用ssh进入您的服务器以查看日志。

  • 内存分析

在PM2 Plus中,您具有CPU配置文件,可让您了解使用CPU最多的工作,而对于Enterprise,您具有类似的内存框架,您可以精确地了解哪个工作在应用程序中分配内存。它可以使您精确地确定哪些工作负责内存溢出。请注意,可以根据应用程序并行运行这一事实来进行概要分析,没有任何令人信服的理由试图再复制正在开发的任何cpu /内存问题,只需直接在发生问题的地方直接分发概要文件即可。

  • 分析

在企业版中,可以存储一直在应用程序上运行的所有配置文件,以便您可以考虑它们,对其进行审核并了解代码中的调整如何影响cpu /内存利用率。

PM2运行时-流程管理器运行时2

PM2 Runtime是具有固有负载平衡器的Node.js应用程序的生产过程管理器。它使您能够永久保持应用程序的生命周期,无需停机即可重新加载它们,并鼓励常规的Devops事业。

以生产模式启动应用程序非常简单:

pm2 start app.js

PM2提供了一个启动挂钩:启动挂钩的目的是保存您的进程列表,并在计算机重启(甚至是意外重启)时将其恢复。

每个操作系统都有专门的工具来处理启动挂钩:PM2提供了一种简便的方法来生成和配置启动挂钩。

pm2 startup

PM2还提供直观过程管理(类似于docker ps)

pm2 ls

通过

管理您的流程
pm2 start 
pm2 stop
pm2 restart
pm2 reload

现在,要回答您的问题PM2与PM2运行时? IMO,PM2和运行时都相同。