Docker&PM2:基于string的CMD与环境variables
我目前正在Docker中使用CMD
的shell- form来启动我的节点应用程序:
CMD /usr/src/app/node_modules/.bin/trifid --config $TRIFID_CONFIG
env-var TRIFID_CONFIG
中设置为默认值:
ENV TRIFID_CONFIG config.customer.json
这样可以很容易地为dev-environments传递另一个configuration文件。
现在我尝试将其切换到PM2进行生产。 然而,看起来所有的PM2样品都使用“exec”forms,而我所理解的并不是评估ENV-vars。 我尝试了PM2的shellforms:
CMD pm2-docker /usr/src/app/node_modules/trifid/server.js --config $TRIFID_CONFIG
但它看起来像variables不像这样计算,它会在执行时回到默认值。
在Docker镜像里面用PM2处理这个问题的正确方法是什么?
我在Github上进行了一次讨论,并同时发现:
CMD pm2-docker /usr/src/app/node_modules/.bin/trifid -- --config $TRIFID_CONFIG
所以诀窍就是使用--
在命令之后,其余的将作为parameter passing。 如果我使用shell的forms,env-vars似乎得到正确的评估。