Node.js Docker&;PM2:带环境变量的基于字符串的CMD
我目前正在Docker中使用-form的Node.js Docker&;PM2:带环境变量的基于字符串的CMD,node.js,docker,dockerfile,pm2,Node.js,Docker,Dockerfile,Pm2,我目前正在Docker中使用-form的CMD来启动我的节点应用程序: CMD /usr/src/app/node_modules/.bin/trifid --config $TRIFID_CONFIG env varTRIFID_CONFIG在Dockerfile中设置为默认值: ENV TRIFID_CONFIG config.customer.json 例如,这使得为开发环境传递另一个配置文件变得很容易 现在我试着将其切换到生产。然而,看起来所有PM2样本都在使用“exec”表格,据我
CMD
来启动我的节点应用程序:
CMD /usr/src/app/node_modules/.bin/trifid --config $TRIFID_CONFIG
env varTRIFID_CONFIG
在Dockerfile
中设置为默认值:
ENV TRIFID_CONFIG config.customer.json
例如,这使得为开发环境传递另一个配置文件变得很容易
现在我试着将其切换到生产。然而,看起来所有PM2样本都在使用“exec”表格,据我所知,该表格并未评估环境变量。我尝试了PM2的外壳形式:
CMD pm2-docker /usr/src/app/node_modules/trifid/server.js --config $TRIFID_CONFIG
但看起来变量不是这样计算的,它在执行时会返回默认值
在Docker图像中处理PM2的正确方法是什么?我进行了讨论,同时得出了以下结论:
CMD pm2-docker /usr/src/app/node_modules/.bin/trifid -- --config $TRIFID_CONFIG
因此,诀窍是在命令之后使用--
,其余部分将作为参数传递。如果我使用shell形式的env-vars,似乎确实得到了正确的评估。我进行了讨论,同时找到了答案:
CMD pm2-docker /usr/src/app/node_modules/.bin/trifid -- --config $TRIFID_CONFIG
因此,诀窍是在命令之后使用
--
,其余部分将作为参数传递。如果我使用shell form env Var,看起来确实得到了正确的评估。你最好使用一个流程文件来配置这个ok,当我开始工作时检查并调整我的答案你最好使用一个流程文件来配置这个ok,当我开始工作时检查并调整我的答案