我将尝试在Dockerfile中使用环境变量替换,并结合Docker的环境变量替换,但似乎替换操作是在替换之后进行的。
以下是Dockerfile内容:
使用Docker运行命令:
打印以下环境变量:
你可以看到,即使我替换了名称变量,message变量仍然使用来自name的原始值进行替换。
有人知道如何使用docker环境变量替换进行环境变量替换吗? 编辑: 我在Docker论坛中找到评论,指出环境变量在构建时被解释,但可以在运行时逐个替换。因此文档有点误导。
以下是Dockerfile内容:
FROM alpine:3.7
ENV name="World"
ENV message="Hello, ${name}"
ENTRYPOINT ["env"]
使用Docker运行命令:
$ docker run -it --rm -e "name=Marvin" envtest/helloworld
打印以下环境变量:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=49d702faf257
TERM=xterm
name=Marvin
message=Hello, World
HOME=/root
你可以看到,即使我替换了名称变量,message变量仍然使用来自name的原始值进行替换。
有人知道如何使用docker环境变量替换进行环境变量替换吗? 编辑: 我在Docker论坛中找到评论,指出环境变量在构建时被解释,但可以在运行时逐个替换。因此文档有点误导。
name
设置为某些内容,然后使用$name
将message
设置为某些内容,然后替换name
的内容,那么不会更改message
中包含的内容。您需要再次设置message
才能使用新名称。 - alkanen