启动PM2时从dotenv文件中加载变量

时间:2019-04-17 11:50:32

标签: javascript node.js pm2

我通过以下方式使用PM2作为package.json脚本启动应用程序实例:

"start:pm2": "pm2 start -i max node myapp.js"

我发现,并不是团队中的所有成员在开发时总是希望使用max作为实例编号的值,而是更喜欢使用较低的值。

为了不更改package.json,我最好让他们更改.env文件中的值,因为我们已经在使用它,因此来自它的值将用作pm2的参数。

我知道我可以创建一个包装器js或bash脚本来从.env文件中加载变量并将其传递给pm2,但最好是没有它的解决方案。

我该如何实现?

2 个答案:

答案 0 :(得分:2)

您可以在“ env:”属性下创建一个ecosystem.config.js文件和declare your environment variables,您可以使用NODE_APP_INSTANCE来设置实例数:

module.exports = {
  apps : [{
    name: "MyApp",
    script: "./myapp.js",
    env: {
      NODE_ENV: "development",
      NODE_APP_INSTANCE: "max"
    },
    env_production: {
      NODE_ENV: "production",
    }
  }]
}

然后调用pm2 startpm2 start /path/to/ecosystem.config.js从另一个文件夹加载生态系统。

答案 1 :(得分:0)

一种更好的方式是从代码中删除dotenv并在命令行上“要求”它。这样一来,您的代码就可以在任何环境(包括基于云的环境)之间很好地进行传输-这是环境变量的主要功能之一。

a)在脚本(例如app.js)旁边编码.env文件

b)在不使用pm2的情况下运行脚本:

node -r dotenv/config app.js
pm2.config.js中的

c):

module.exports = {
  apps : [{
    name      : 'My Application',
    script    : 'app.js',
    node_args : dotenv/config',
    ...
  }],
}

然后     pm2 start pm2.config.js

注意:在命令行上使用dotenv / config是dotenv自己推荐的最佳实践之一。