如何用pm2实现滚动更新?

问题描述 投票:0回答:1

我想使用pm2实现零停机部署,我读过很多文章、指南、github问题,它们都指向相同的方法,即使用像这样的集群方法

pm2 start app.js -i 2 <number of instances>

嗯,这有效,它启动了同一个应用程序的 2 个进程,事情是,我的 Express 应用程序默认在 PORT 3000 上运行,据我了解,这个集群应该像 docker 一样工作,所以我不应该担心端口 3000 正在使用,但我收到了该错误。

这应该发生吗?如何通过这种方法实现零停机部署?我不清楚端口是否应该被占用或者我是否做错了什么。

我已经尝试了本指南中的所有内容https://medium.com/learnwithrahul/zero-downtime-deployments-with-pm2-93013713df15以及相关内容。

这是我的 pm2 配置文件(ecosystem.config.js)

module.exports = {
  apps : [{
    name   : "enterprise",
    script : "yarn",
    instances: "2",
    exec_mode: "cluster",
    error_file: "./error-log",
    cwd: "project/packages/backend",
    args: "start:stag"
  }]
}

我也尝试过

wait-ready
参数,但这不是我现在的首要任务。

node.js deployment continuous-deployment pm2
1个回答
0
投票

不完全确定这是否对您的特定场景有帮助,但也许 可以帮助别人。

我对 NextJS 应用程序也有同样的问题,当我尝试在集群模式下运行它时,应用程序的第二个实例失败,因为端口

3000
已在使用中。

这是因为我在

script
属性
nx next start my-app
中,将其更改为
script: 'node_modules/next/dist/bin/next'
后,PM2 能够在集群模式下正确运行它。

确保您的

node_modules
文件夹中有
cwd
文件夹。

© www.soinside.com 2019 - 2024. All rights reserved.