我通过这种方式将我的应用程序的实例作为带有PM2的package.json
脚本启动:
"start:pm2": "pm2 start -i max node myapp.js"
我发现并非团队中的所有成员都希望在开发时使用max
作为实例数的值,但更喜欢使用较低的值。
要不更改package.json
,我最好让他们更改.env
文件中的值,因为我们已经使用它,以便它的值将用作pm2的参数。
我知道我可以创建一个包装器js或bash脚本来加载.env
文件中的变量并将其传递给pm2但是没有它的解决方案会更好。
我怎样才能做到这一点?
这里更好的模式是从代码中删除dotenv并在命令行上“需要”它。这使您的代码可以在任何环境(包括基于云)之间轻松传输 - 这是环境变量的主要功能之一。
a)将.env文件与脚本一起编码(例如app.js)
b)在没有pm2的情况下运行脚本:
node -r dotenv/config app.js
c)在pm2.config.js中:
module.exports = {
apps : [{
name : 'My Application',
script : 'app.js',
node_args : dotenv/config',
...
}],
}
然后pm2 start pm2.config.js
注意:在命令行中使用dotenv / config是dotenv自己推荐的最佳实践之一
您可以在“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 start
或pm2 start /path/to/ecosystem.config.js
从其他文件夹加载生态系统。