以下是使用pm2启动process.json
应用的非常简单js
。
我的目标是让这个过程从node_args
开始,但仅针对非刺激发布。因此,例如,如果某个环境变量以某种方式设置,则触发node_args,否则忽略它们。
这可能吗?如果没有,我可以做任何变通办法吗?
{
apps : [
{
name : 'API',
script : './app.js',
node_args: ["--inspect","--debug=0.0.0.0:7000"],
env: {
NODE_ENV: 'development'
}
}
]
}
我知道可以在命令行中抛出node_args
,但目标是在docker中运行它,其中“run”命令对源映像是静态的,因此不可行。
以下是我的Dockerfile中的CMD
条目:
CMD [ "pm2-docker", "--auto-exit", "--watch", "process.json"]
答案 0 :(得分:2)
您可以根据环境设置定义同一应用的多个声明。
在您的情况下,您的流程文件定义如下:
<强> process.json 强>
{
apps : [
{
name : 'API-DEV',
script : './app.js',
node_args: ["--inspect","--debug=0.0.0.0:7000"],
env: {
NODE_ENV: 'development'
}
},
{
name : 'API-PROD',
script : './app.js',
env: {
NODE_ENV: 'production'
}
}
]
}
然后,如果您要运行该应用的development
版本,CMD
的{{1}}条目将
Dockerfile
如果您不喜欢重复项,可以使用CMD [ "pm2-docker", "start", "process.json", "--only", "API-DEV", "--auto-exit", "--watch" ]
文件而不是.config.js
并定义您的配置
process.config.js
json
然后,const appDefs = [
{
"suffix": "prod",
"node_args": [],
"env": {
"NODE_ENV": "production"
}
},
{
"suffix": "dev",
"node_args": ["--inspect","--debug=0.0.0.0:7000"],
"env": {
"NODE_ENV": "development"
}
}
];
module.exports = {
"apps": appDefs.map(appDef => ({
"name": `API-${appDef.suffix}`,
"script": "./app.js",
"node_args": appDef.node_args,
"env": appDef.env
}))
};
条目将
CMD