gpt4 book ai didi

使用环境变量替换的 Docker 环境替换

转载 作者:行者123 更新时间:2023-12-02 19:06:52 25 4
gpt4 key购买 nike

我正在尝试在 Dockerfile 中使用环境变量替换与来自 d​​ocker 的环境变量替换配对,但看起来变量替换发生在替换之后。

以下 Dockefile:

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

你可以看到,即使我替换了 name 变量,message 变量仍然被替换为 name 中的原始值。

有谁知道如何用docker环境变量替换做环境变量替换?

编辑:我找到了a comment在 Docker 论坛中指出,环境变量在构建时被解释,但可以在运行时被一个一个地替换。所以 documentation有点误导。

最佳答案

构建 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,即现在 nameMarvin

消息仍然是“Hello, world”

因为在图片中,message"Hello, world" 而不是 "Hello, ${name}"

关于使用环境变量替换的 Docker 环境替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49380478/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com