我通过以下方式使用PM2作为package.json
脚本启动应用程序实例:
"start:pm2": "pm2 start -i max node myapp.js"
我发现,并不是团队中的所有成员在开发时总是希望使用max
作为实例编号的值,而是更喜欢使用较低的值。
为了不更改package.json
,我最好让他们更改.env
文件中的值,因为我们已经在使用它,因此来自它的值将用作pm2的参数。
我知道我可以创建一个包装器js或bash脚本来从.env
文件中加载变量并将其传递给pm2,但最好是没有它的解决方案。
我该如何实现?
答案 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 start
或pm2 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自己推荐的最佳实践之一。