作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
下面是一个非常简单的 process.json
,用于使用 pm2 启动 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”]
最佳答案
您可以定义同一应用程序的多个声明,具体取决于其环境设置。
在您的情况下,您的流程文件定义可以如下:
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'
}
}
]
}
然后,如果您想运行开发
版本的应用程序,Dockerfile
的CMD
条目将为
CMD [ "pm2-docker", "start", "process.json", "--only", "API-DEV", "--auto-exit", "--watch" ]
如果您不喜欢重复,您可以使用 .config.js
文件而不是 json
并像这样定义您的配置
process.config.js
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
条目将是
CMD [ "pm2-docker", "start", "process.config.js", "--only", "API-DEV", "--auto-exit", "--watch" ]
关于javascript - node.js + pm2 -- 根据环境配置node_args,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47602950/
如果 Nodejs 进程是从读取 PM2 JSON 配置文件开始的 pm2.json文件包含: { "name": "foobar", "script": "./foo
我是一名优秀的程序员,十分优秀!