扫码一下
查看教程更方便
PM2 将在启动新进程时按以下顺序注入环境变量:
module.exports = {
apps : [
{
name: "myapp",
script: "./server.js",
watch: true,
env: {
"NODE_ENV": "development",
}
}
]
}
这里可以看到PM2会使用NODE_ENV=development覆盖当前环境。 但是你也可以像这样定义不同的环境:
module.exports = {
apps : [
{
name: "myapp",
script: "./server.js",
watch: true,
env: {
"PORT": 3000,
"NODE_ENV": "development"
},
env_production: {
"PORT": 80,
"NODE_ENV": "production",
}
}
]
}
这里默认环境在 env 中,但我们可以通过使用以下命令来决定使用 env_production
。
$ pm2 start ecosystem.config.js --env production
我们可以定义任意数量的环境,但请记住,必须通过 --env
传递要使用的环境名称(在 env_ 之后)。
有一个 NODE_APP_INSTANCE
环境变量用于区分进程,例如:你可能只想在一个进程上运行 cronjob,可以检查 process.env.NODE_APP_INSTANCE === '0'
。 两个进程永远不能有相同的数字,在 pm2 restart 和 pm2 scale 命令之后仍然如此。
你可能会遇到带有 NODE_APP_INSTANCE
名称的 node-config 问题,因此您可以使用 instance_var 选项重命名它:
module.exports = {
apps : [
{
name: "myapp",
script: "./server.js",
watch: true,
instance_var: 'INSTANCE_ID',
env: {
"PORT": 3000,
"NODE_ENV": "development"
}
}
]
}
在这种情况下,变量将具有相同的行为,但将在 process.env.INSTANCE_ID
中。
有一个选项可以让 PM2 为每个启动的实例增加一个环境变量,例如:
module.exports = {
apps : [
{
name: "myapp",
script: "./server.js",
instances: 2,
exec_mode: "cluster",
watch: true,
increment_var : 'PORT',
env: {
"PORT": 3000,
"NODE_ENV": "development"
}
}
]
}
在这个示例中,如果运行 pm2 start ecosystem.config.js
:
process.env.PORT = 3000
和第二个 process.env.PORT = 3001
注意
:使用 pm2 scale myapp 4 进行扩展时,它也会增加两个实例,两个新实例PORT 变量分别为 3002 和 3003。