启动 PM2 时从 dotenv 文件加载一个变量
Load a variable from dotenv file when starting PM2
我正在使用 PM2 作为 package.json
脚本启动我的应用实例:
"start:pm2": "pm2 start -i max node myapp.js"
我发现并不是所有的团队成员在开发的时候都希望使用max
作为实例数的值,而是更喜欢使用一些较低的值。
为了不更改 package.json
我最好让他们更改 .env
文件中的值,因为我们已经在使用它,这样它的值将用作 pm2 的参数。
我知道我可以创建一个包装器 js 或 bash 脚本来从 .env
文件加载变量并将其传递给 pm2,但最好有一个没有它的解决方案。
我怎样才能做到这一点?
可以创建一个ecosystem.config.js
file and declare your environment variables under the “env:” attribute, in your case the 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
从其他文件夹加载生态系统。
此处更好的模式是从您的代码中删除 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 : '-r dotenv/config',
...
}],
}
然后
pm2 start pm2.config.js
注:在命令行中使用dotenv/config是dotenv自己推荐的最佳实践之一
我正在使用 PM2 作为 package.json
脚本启动我的应用实例:
"start:pm2": "pm2 start -i max node myapp.js"
我发现并不是所有的团队成员在开发的时候都希望使用max
作为实例数的值,而是更喜欢使用一些较低的值。
为了不更改 package.json
我最好让他们更改 .env
文件中的值,因为我们已经在使用它,这样它的值将用作 pm2 的参数。
我知道我可以创建一个包装器 js 或 bash 脚本来从 .env
文件加载变量并将其传递给 pm2,但最好有一个没有它的解决方案。
我怎样才能做到这一点?
可以创建一个ecosystem.config.js
file and declare your environment variables under the “env:” attribute, in your case the 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
从其他文件夹加载生态系统。
此处更好的模式是从您的代码中删除 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 : '-r dotenv/config',
...
}],
}
然后
pm2 start pm2.config.js
注:在命令行中使用dotenv/config是dotenv自己推荐的最佳实践之一