gpt4 book ai didi

docker - 如何在运行docker run命令时在docker文件中动态传递ENV值?

转载 作者:行者123 更新时间:2023-12-02 18:47:11 25 4
gpt4 key购买 nike

我在docker文件中提供了以下内容

FROM ubuntu:latest
ENV value = $var_anme
ENTRYPOINT ["/bin/bash", "-c", "echo hello, $value"]
在图像构建后,我给出了以下命令
docker run -it test:latest -e var_name="welcome"
我得到了输出
hello, =
预期输出为
hello,welcome
我不知道我犯了什么错误,有人可以向我解释

最佳答案

问题是您试图在运行时为在构建期间设置的内容提供值。
Dockerfile中,将变量value设置为$var_name。该指令在docker镜像的构建阶段(即当您发出docker build -t test .时)进行评估。
在此阶段,不会填充环境变量var_name,因此在构建阶段,docker将创建一个将value环境变量设置为空的镜像。
您需要为正在创建的容器提供value变量的值。您可以通过发出如下运行命令来进行指定:docker run -e value=welcome test通常要做的是在ENV中使用Dockerfile指令为程序将使用的变量设置一些默认值,然后在创建容器以自定义其值时覆盖它们。
调整您的示例:

FROM ubuntu:latest
ENV value=Andrea
ENTRYPOINT ["/bin/bash", "-c", "echo hello, $value"]
命令 docker run test将输出 hello, Andrea
命令 docker run -e value=John test将输出 hello, John

关于docker - 如何在运行docker run命令时在docker文件中动态传递ENV值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63148488/

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