PM2 启动生态系统.config.js 在节点 js 项目的 dockerfile 中不起作用

Posted

技术标签:

【中文标题】PM2 启动生态系统.config.js 在节点 js 项目的 dockerfile 中不起作用【英文标题】:PM2 start ecosystem.config.js not working in dockerfile in node js project 【发布时间】:2022-01-22 19:44:19 【问题描述】:

我有一个节点 js 项目,我正在使用 Docker 将构建更新到服务器。 我想在服务器中以集群模式实现 pm2。于是我添加了ecosystem.config.js文件,内容如下:

module.exports = 
apps: [
name: "TestMyApp",
script: "app.js",
instances: "1",
exec_mode: "cluster",
autorestart: true
]

然后在我的 DockerFile 中,我添加了这样的命令

FROM node:16.9.1
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
RUN npm install pm2 -g
COPY . .
EXPOSE 8005
CMD ["pm2-runtime", "ecosystem.config.js"] 
CMD ["npm", "start"]

但是当我在服务器中更新构建并运行 pm2 list 时,我的 pm2 'TestMyApp' 没有列出。

【问题讨论】:

【参考方案1】:

您有多个CMD 命令。如果有多个 CMD 命令,则只有最后一个生效。因此,您的pm2-runtime 并未实际执行。

如果您已经在使用pm2-runtime,不知道为什么需要npm start

【讨论】:

当我删除 npm start 并且只保留 pm2-runtime 时,我的服务器没有运行。

以上是关于PM2 启动生态系统.config.js 在节点 js 项目的 dockerfile 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

如何使用jenkins重启PM2?

在 aws elastic beanstalk 中启动节点 pm2 进程管理器的问题,npm 更新检查失败

nuxt+pm2部署,解决nuxt异常缓慢的问题

使用pm2在同服务器配置开发生产测试等环境

AWS Elastic Beanstalk(节点环境)中的 pm2 重启循环

PM2部署文件夹结构 - 如何使用/配置