【问题标题】:Run PM2 Docker with specific environment在特定环境下运行 PM2 Docker
【发布时间】:2021-01-17 05:24:39
【问题描述】:

我一直在尝试将环境传递给我的 PM2 进程,以便我可以定位 developmentproduction

我的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"]?

标签: node.js docker pm2


【解决方案1】:

CMD [ "pm2-runtime", "start", "ecosystem.config.js", "--env=production"] 为我工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-10
    • 2018-06-05
    • 2015-11-21
    • 1970-01-01
    • 2017-02-05
    • 1970-01-01
    • 1970-01-01
    • 2016-07-05
    相关资源
    最近更新 更多