【发布时间】:2021-01-17 05:24:39
【问题描述】:
我一直在尝试将环境传递给我的 PM2 进程,以便我可以定位 development 或 production。
我的Dockerfile 如下:
FROM keymetrics/pm2:latest
COPY dist dist/
COPY pm2.json .
CMD ["pm2-runtime", "start", "pm2.json"]
我有以下 pm2.json:
{
"name": "my-app",
"script": "dist/server.js",
"instances": "1",
"env": {
"NODE_ENV": "development"
},
"env_production" : {
"NODE_ENV": "production"
}
}
而且我无法正确设置环境,所以当我访问 process.env.NODE_ENV 时,我总是返回“无”。
我已尝试将 CMD 更改为:
CMD ["pm2-runtime", "start", "pm2.json", "--env", "production"] 不开心。
我也尝试过像这样在 dockerfile 中设置环境变量:
ENV NODE_ENV=production 也没有收到。
我还检查了最新的 PM2 文档,并将 pm2.json 替换为具有几乎相同结构的生态系统.config.js,但这也不起作用。
我错过了什么?我敢肯定,这一定是很容易修复但无法正常工作的东西。
谢谢
【问题讨论】:
-
你试过
CMD ["pm2-runtime", "pm2.json"]吗? -
刚试了也没用
-
上面的命令是否启动了你的节点应用程序?
-
是的,应用程序已启动,但是我正在执行 console.log(process.env.NODE_ENV) 并且我一直得到“无”返回
-
可能是
CMD ["NODE_ENV=production", "pm2-runtime", "start", "pm2.json"]?