首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在pm2生态系统中部署不同数量的pm2.config.js叉模式实例

如何在pm2生态系统中部署不同数量的pm2.config.js叉模式实例
EN

Stack Overflow用户
提问于 2019-09-27 20:43:21
回答 2查看 1.4K关注 0票数 1

我希望在叉模式下运行多个pm2实例,这样nginx就可以应用粘性会话。部署使用的是PM2的生态系统cfg。在env中部署多个叉实例的一种方法是使用不同的端口多次定义应用程序:

代码语言:javascript
复制
apps : [{
  ...,
  NODE_PORT: 3000,
  env: {
    NODE_ENV: 'development',
  },
  ...,
  NODE_PORT: 3001,
  env: {
    NODE_ENV: 'development',
  },

对于单个env来说,这似乎是可以的,但是对其他env的支持似乎并不简单。分阶段和生产需要更多的叉实例和不同的端口。

我尝试为每个env创建单独的生态系统文件,即pm2.ecosystem_development.js,但得到了错误。

环境未在package.json文件中定义

另一个想法是检查当前的env,然后创建一个应用程序数组,并在生态系统cfg中设置“应用程序:”。这可能有效,但如果有更好的选择,最好避免。

如何使用不同数量的具有唯一端口的叉实例来实现三个env?

EN

回答 2

Stack Overflow用户

发布于 2021-02-11 07:44:45

如果不想使用多个生态系统文件,可以从进程参数中检测环境。

例如,如果您通过以下方式运行应用程序:

代码语言:javascript
复制
pm2 start --env staging ecosystem.config.js

ecosystem.config.js:

代码语言:javascript
复制
const DEFAULT_ENV = 'production'
const env = (() => {
  const { argv } = process
  const envArgIndex = argv.indexOf('--env')
  if (envArgIndex === -1) return
  return argv[envArgIndex + 1]
})() || DEFAULT_ENV

module.exports = {
  apps: [{
    name: "example",
    exec_mode: "cluster",
    instances: env === 'production' ? 2 : 1,
  }],
}
票数 3
EN

Stack Overflow用户

发布于 2019-09-29 04:15:00

为了让它正常工作,我为每个env创建了一个与上面类似的生态系统文件,而不是尝试将所有env都放在一个文件中。

需要注意的是:文件名必须以“.config.js”结尾,否则您将看到错误“package.json文件中没有定义环境”。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58141135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档