【问题标题】:How to deploy different number of pm2 fork mode instances with pm2.config.js ecosystem如何使用 pm2.config.js 生态系统部署不同数量的 pm2 fork 模式实例
【发布时间】:2020-01-28 04:03:16
【问题描述】:

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

apps : [{
  ...,
  NODE_PORT: 3000,
  env: {
    NODE_ENV: 'development',
  },
  ...,
  NODE_PORT: 3001,
  env: {
    NODE_ENV: 'development',
  },

这对于单个 env 似乎没问题,但是对其他 env 的支持似乎并不简单。暂存和生产需要更多的 fork 实例和不同的端口。

我尝试为每个环境制作单独的生态系统文件,即 pm2.ecosystem_development.js 但出现错误

package.json 文件中未定义环境

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

如何配置三个具有不同数量的具有唯一端口的分叉实例的环境?

【问题讨论】:

    标签: node.js pm2


    【解决方案1】:

    为了让它工作,我为每个环境创建了一个类似于上面的生态系统文件,而不是尝试在一个文件中配置所有环境。

    重要提示:文件名必须以“.config.js”结尾,否则您会看到错误“环境未在 package.json 文件中定义”。

    【讨论】:

      【解决方案2】:

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

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

      pm2 start --env staging ecosystem.config.js
      

      生态系统.config.js:

      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,
        }],
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-01-22
        • 1970-01-01
        • 2019-04-25
        • 2019-11-07
        • 1970-01-01
        • 2019-04-26
        • 1970-01-01
        相关资源
        最近更新 更多