一尘不染

如何在ENTRYPOINT数组中使用Docker环境变量?

docker

如果设置了环境变量,请说ENV ADDRESSEE=world,然后在连接到固定字符串的入口点脚本中使用它,例如:

ENTRYPOINT ["./greeting", "--message", "Hello, world!"]

world作为环境varible的价值,我该怎么办呢?我尝试使用,"Hello, $ADDRESSEE"但这似乎不起作用,因为它$ADDRESSEE确实是正确的。


阅读 1552

收藏
2020-06-17

共1个答案

一尘不染

您正在使用ENTRYPOINT 的 exec形式 。与 shell表单 不同, exec表单
不会调用命令shell。这意味着正常的外壳处理不会发生。例如,ENTRYPOINT [ "echo", "$HOME" ]将不会在$
HOME上进行变量替换。如果要进行shell处理,则可以使用 shell形式 或直接执行shell,例如:ENTRYPOINT [ "sh", "-c", "echo $HOME" ]
当使用exec表单并直接执行shell时(例如在shell表单中),是由shell进行环境变量扩展,而不是docker。(来自Dockerfile参考

在你的情况下,我会使用 外壳形式

ENTRYPOINT ./greeting --message "Hello, $ADDRESSEE\!"
2020-06-17