我目前正在使用 shell -Docker 中的 CMD
形式用于启动我的 Node 应用程序:
CMD /usr/src/app/node_modules/.bin/trifid --config $TRIFID_CONFIG
环境变量 TRIFID_CONFIG
在 Dockerfile
中设置为默认值:
ENV TRIFID_CONFIG config.customer.json
这使得为开发环境传递另一个配置文件变得容易。
现在我尝试将其切换为 PM2用于生产。然而,看起来所有 PM2 样本都使用“exec”形式,据我所知,它不会评估 ENV-vars。我尝试了 PM2 的 shell 形式:
CMD pm2-docker /usr/src/app/node_modules/trifid/server.js --config $TRIFID_CONFIG
但看起来变量没有像这样评估,它在执行时无法恢复到默认值。
在 Docker 镜像中使用 PM2 处理此问题的正确方法是什么?
最佳答案
我对 Github 进行了讨论同时想通了:
CMD pm2-docker /usr/src/app/node_modules/.bin/trifid -- --config $TRIFID_CONFIG
所以技巧是在命令后面使用 --
,其余部分将作为参数传递。如果我使用 shell 形式的 env-vars 似乎可以正确评估。
关于node.js - Docker 和 PM2 : String based CMD with environment variables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41803392/