Mar*_*ter 3 environment-variables docker
我正在尝试在 Dockerfile 中使用环境变量替换,并与 docker 中的环境变量替换配对,但看起来变量替换发生在替换之后。
以下 Dockerfile:
FROM alpine:3.7
ENV name="World"
ENV message="Hello, ${name}"
ENTRYPOINT ["env"]
Run Code Online (Sandbox Code Playgroud)
使用 Docker 运行命令:
$ docker run -it --rm -e "name=Marvin" envtest/helloworld
Run Code Online (Sandbox Code Playgroud)
打印以下环境变量:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=49d702faf257
TERM=xterm
name=Marvin
message=Hello, World
HOME=/root
Run Code Online (Sandbox Code Playgroud)
您可以看到,即使我替换了 name 变量,消息变量仍然被name中的原始值替换。
有谁知道如何使用docker环境变量替换来进行环境变量替换?
当你构建 Dockerfile 时,你会得到一个镜像。并且该镜像不知道 Dockerfile 中写入的内容。
这意味着,docker 镜像不了解天气情况ENV message="Hello, ${name}",或者ENV message="Hello, world"被写入 Dockerfile 中。
它只是有它的环境变量,即name="World",message="Hello, world"
因此,当您使用 启动图像时$ docker run -it --rm -e "name=Marvin" envtest/helloworld,它会覆盖变量name,即现在name是Marvin。
但message依然存在"Hello, world"。
因为,在图像内部 , message并不是"Hello, world""Hello, ${name}"
| 归档时间: |
|
| 查看次数: |
5361 次 |
| 最近记录: |