Docker 环境变量未覆盖

mha*_*ken 2 environment-variables docker

鉴于我有一个像这样的 dockerfile:

ARG MAX_MEMORY_PER_NODE="10GB"
ENV P_MAX_MEMORY_PER_NODE="${MAX_MEMORY_PER_NODE}"
ENTRYPOINT ["/var/p/entrypoint.sh"]
Run Code Online (Sandbox Code Playgroud)

Entrypoint.sh 的作用如下:

echo "Max memory ${P_MAX_MEMORY_PER_NODE}"
Run Code Online (Sandbox Code Playgroud)

如果我使用默认值运行容器,我会期望

Max Memory 10GB
Run Code Online (Sandbox Code Playgroud)

这可行,但如果我跑

docker run me/mycontainer:latest -e P_MAX_MEMORY_PER_NODE=1GB
Run Code Online (Sandbox Code Playgroud)

该脚本仍然使用默认值(不打印 1GB)。事实上,如果我跑:

docker run me/mycontainer:latest -e A_TEST=Hello
Run Code Online (Sandbox Code Playgroud)

剧本里有

echo "My test: ${A_TEST}"
Run Code Online (Sandbox Code Playgroud)

它会输出

My test:
Run Code Online (Sandbox Code Playgroud)

我在这里做错了什么?我不能覆盖(甚至设置) docker run 入口点脚本中使用的环境变量吗?

小智 8

在图像之前设置环境变量:

docker run -e "A_TEST=hello" alpine env

  • 哇,这可能是我一段时间以来做过的最愚蠢的事情之一。我想如果我遵循参数顺序的文档会有帮助。谢谢。 (2认同)