如果我设置一个环境变量,比如 ENV ADDRESSEE=world
,我想在连接到固定字符串的入口点脚本中使用它,例如:
ENTRYPOINT ["./greeting", "--message", "Hello, world!"]
world
是环境变量的值,我该怎么做?我尝试使用 "Hello, $ADDRESSEE"
但这似乎不起作用,因为它需要 $ADDRESSEE
从字面上看。
原文由 Psycho Punch 发布,翻译遵循 CC BY-SA 4.0 许可协议
您正在使用 ENTRYPOINT 的 exec 形式。与 shell 形式 不同, exec 形式 不调用命令 shell。这意味着不会发生正常的外壳处理。例如,
ENTRYPOINT [ "echo", "$HOME" ]
不会对 \(HOME 进行变量替换。如果要进行 shell 处理,则使用 **shell 形式** 或直接执行 shell,例如: `ENTRYPOINT [ "sh", "-c", "echo \)HOME” ]` 。当使用 exec 形式并直接执行 shell 时,与 shell 形式一样,是 shell 进行环境变量扩展,而不是 docker。(来自 Dockerfile 参考)
在你的情况下,我会使用 shell 形式