Docker& PM2:基于字符串的CMD和环境变量

时间:2017-01-23 09:52:52

标签: node.js docker dockerfile pm2

我目前在Docker中使用shell - CMD形式启动我的节点应用:

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

env-var TRIFID_CONFIG设置为Dockerfile中的默认值:

ENV TRIFID_CONFIG config.customer.json

这样可以很容易地为dev-environment传递另一个配置文件。

现在我尝试将其切换为PM2进行制作。然而,看起来所有PM2样本都使用“exec”形式,根据我的理解,它不会评估ENV-vars。我用PM2尝试了shell形式:

CMD pm2-docker /usr/src/app/node_modules/trifid/server.js --config $TRIFID_CONFIG

但看起来变量没有像这样评估,它在执行时失败回到默认状态。

在Docker镜像中使用PM2处理此问题的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

我对Github进行了讨论,同时也弄明白了:

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

所以诀窍是在命令后使用--,其余的将作为参数传递。如果我使用shell形式env-vars,似乎可以正确评估。