node.js - Docker 和 PM2 : String based CMD with environment variables

标签 node.js docker dockerfile pm2

我目前正在使用 shell -Docker 中的 CMD 形式用于启动我的 Node 应用程序:

CMD /usr/src/app/node_modules/.bin/trifid --config $TRIFID_CONFIG

环境变量 TRIFID_CONFIGDockerfile 中设置为默认值:

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/

相关文章:

php - 如何在基于SimpleSAMLphp的IdP中用属性替换NameId的值?

windows - Windows Server 2016 TP4上的Docker通过powershell下载容器中的git

asp.net - Docker 运行给出 "CreateProcess: failure in a Windows system call: The system cannot find the file specified. (0x2)"

docker - 更改 k8s Pod 的入口点,但保留 CMD

node.js - 如何处理(即记录)restify 中的错误

node.js - NodeJS Redis 监听器

node.js - 尝试启动 yarn 时出现奇怪的 IP - EADDRNOTAVAIL

javascript - Node Cluster模块,与Passenger不兼容

docker - 是否可以从yocto生成的镜像创建docker镜像?

docker - 在 docker-compose 构建期间运行 npm install 的问题