我希望在叉模式下运行多个pm2实例,这样nginx就可以应用粘性会话。部署使用的是PM2的生态系统cfg。在env中部署多个叉实例的一种方法是使用不同的端口多次定义应用程序:
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?
发布于 2021-02-11 07:44:45
如果不想使用多个生态系统文件,可以从进程参数中检测环境。
例如,如果您通过以下方式运行应用程序:
pm2 start --env staging ecosystem.config.jsecosystem.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,
}],
}发布于 2019-09-29 04:15:00
为了让它正常工作,我为每个env创建了一个与上面类似的生态系统文件,而不是尝试将所有env都放在一个文件中。
需要注意的是:文件名必须以“.config.js”结尾,否则您将看到错误“package.json文件中没有定义环境”。
https://stackoverflow.com/questions/58141135
复制相似问题