环境变量

PM2 将在启动新进程时按以下顺序注入环境:

  • 通过命令行注入

  • 通过配置文件注入

module.exports = {
  apps : [
    {
      name: "myapp",
      script: "./app.js",
      watch: true,
      env: {
        "NODE_ENV": "development",
      }
    }
  ]
}

在这里可以看到 PM2 会覆盖当前环境来添加 NODE_ENV=development 。但是你也可以像这样定义不同的环境:

module.exports = {
  apps : [
    {
      name: "myapp",
      script: "./app.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-configarrow-up-right中遇到问题,所以你可以用instance_var选项重命名它:

在这种情况下,变量将具有相同的行为,但将位于process.env.INSTANCE_ID中。

有一个选项可以让 PM2 为每个启动的实例增加一个环境变量,例如:

在这个示例中,如果我运行pm2 start ecosystem.config.js

  • PM2将会为每个实例增加的PORT变量

  • 默认值 3000端嗯

  • 第一个实例将具有process.env.PORT = 3000,第二个process.env.PORT = 3001

circle-exclamation

最后更新于