当 运行 a node.js 应用程序在集群模式下使用 PM2 时,如何通过命令行加载环境变量?
How can I load environment variables via command line when running a node.js app in cluster mode with PM2?
使用节点启动我的应用程序时,我通常 运行:
node -r dotenv/config ./build/index.js
在 fork 模式下使用 PM2 时,我可以像这样启动应用程序:
pm2 start --node-args="-r dotenv/config" build/index.js --name API
如果我尝试 运行 集群模式下的应用程序,它似乎忽略了节点参数并且无法加载环境变量。
pm2 start --node-args="-r dotenv/config" build/index.js -i max --name API
在不明确将其添加到应用程序代码中的情况下,解决此问题的正确解决方法是什么?我应该一开始就这样做吗?
更新: 看起来 pm2 ecosystem
是注入命令行参数的正确方法,如果您正在集群模式下寻找 运行 应用程序。使用 node_args: '-r dotenv/config'
我能够达到预期的结果。谢谢!
P.S。确保将环境设置为生产环境,否则在启动应用程序时可能 运行 出现意外问题。
你可以使用 PM2 的生态系统文件吗?
运行下面会生成一个基本的配置文件。
pm2 ecosystem
默认文件如下:
module.exports = {
apps : [{
name: 'API',
script: 'app.js',
// Options reference: https://pm2.keymetrics.io/docs/usage/application-declaration/
args: 'one two',
instances: 1,
autorestart: true,
watch: false,
max_memory_restart: '1G',
env: {
NODE_ENV: 'development'
},
env_production: {
NODE_ENV: 'production'
}
}],
deploy : {
production : {
user : 'node',
host : 'localhost',
ref : 'origin/master',
repo : 'git@github.com:repo.git',
path : '/var/www/production',
'post-deploy' : 'npm install && pm2 reload ecosystem.config.js --env production'
}
}
};
根据文档中的示例,您可以将 "exec_mode" 添加到 json 文件。见下文:
module.exports = {
apps : [{
name : "worker",
script : "./worker.js",
watch : true,
env: {
"NODE_ENV": "development",
},
env_production : {
"NODE_ENV": "production"
}
},{
name : "api-app",
script : "./api.js",
instances : 4,
exec_mode : "cluster"
}]
}
根据需要修改文件并 运行 使用:
pm2 start ecosystem.config.js
使用节点启动我的应用程序时,我通常 运行:
node -r dotenv/config ./build/index.js
在 fork 模式下使用 PM2 时,我可以像这样启动应用程序:
pm2 start --node-args="-r dotenv/config" build/index.js --name API
如果我尝试 运行 集群模式下的应用程序,它似乎忽略了节点参数并且无法加载环境变量。
pm2 start --node-args="-r dotenv/config" build/index.js -i max --name API
在不明确将其添加到应用程序代码中的情况下,解决此问题的正确解决方法是什么?我应该一开始就这样做吗?
更新: 看起来 pm2 ecosystem
是注入命令行参数的正确方法,如果您正在集群模式下寻找 运行 应用程序。使用 node_args: '-r dotenv/config'
我能够达到预期的结果。谢谢!
P.S。确保将环境设置为生产环境,否则在启动应用程序时可能 运行 出现意外问题。
你可以使用 PM2 的生态系统文件吗?
运行下面会生成一个基本的配置文件。
pm2 ecosystem
默认文件如下:
module.exports = {
apps : [{
name: 'API',
script: 'app.js',
// Options reference: https://pm2.keymetrics.io/docs/usage/application-declaration/
args: 'one two',
instances: 1,
autorestart: true,
watch: false,
max_memory_restart: '1G',
env: {
NODE_ENV: 'development'
},
env_production: {
NODE_ENV: 'production'
}
}],
deploy : {
production : {
user : 'node',
host : 'localhost',
ref : 'origin/master',
repo : 'git@github.com:repo.git',
path : '/var/www/production',
'post-deploy' : 'npm install && pm2 reload ecosystem.config.js --env production'
}
}
};
根据文档中的示例,您可以将 "exec_mode" 添加到 json 文件。见下文:
module.exports = {
apps : [{
name : "worker",
script : "./worker.js",
watch : true,
env: {
"NODE_ENV": "development",
},
env_production : {
"NODE_ENV": "production"
}
},{
name : "api-app",
script : "./api.js",
instances : 4,
exec_mode : "cluster"
}]
}
根据需要修改文件并 运行 使用:
pm2 start ecosystem.config.js