我一直在将一些已经在同一台机器上执行的项目转移到各个泊坞窗。我尝试在其中一个docker项目上使用pm2
以确保如果出现问题(该项目易失),服务将重新启动,并且某些示例要求Dockerfile使用pm2-runtime
代替pm2
中的。我一直在寻找这两者之间的差异,但找不到具体的东西,有人可以帮忙吗?
答案 0 :(得分:1)
pm2和pm2-runtime之间的主要区别是
简单来说,容器的寿命就是CMD
或entrypoint
的寿命。
例如
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应用程序。
答案 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和运行时都相同。