gpt4 book ai didi

docker - 如何将参数从文件传递给dockerfile

转载 作者:行者123 更新时间:2023-12-02 21:07:26 26 4
gpt4 key购买 nike

我正在尝试将文件中的参数传递给 docker 文件。

我尝试将文件复制到 docker 容器中并使用 source 命令。

文件

COPY docker.env .
RUN /bin/bash -c "source docker.env"

Docker.env
BuildMode="release"

另一个尝试也没有奏效
export BuildMode="release"

没有错误,但是当我尝试打印时 ECHO $BuildMode ,它没有打印它里面的值,就像它没有得到它里面的值一样。

但是如果我创建一个 docker 容器并在 docker 容器中尝试相同的代码,那么它就可以工作了。

最佳答案

那么你可以使用--build-arg ,它将传递参数 --build-arg key=value构建时到dockerfile,引用this .

您只需要使用 sed从您的 env 文件中获取并将它们组合成格式 --build-arg key=value构建dockerfile时,示例如下:

文件:

FROM ubuntu:16.04

ARG BuildMode
ENV BuildMode=${BuildMode}

RUN echo $BuildMode

docker.env:
BuildMode="release"

命令:
docker build -t abc:1 $(cat docker.env | sed 's@^@--build-arg @g' | paste -s -d " ") . --no-cache

输出:
shubuntu1@shubuntu1:~/1$ docker build -t abc:1 $(cat docker.env | sed 's@^@--build-arg @g' | paste -s -d " ") . --no-cache
Sending build context to Docker daemon 3.072kB
Step 1/4 : FROM ubuntu:16.04
---> 13c9f1285025
Step 2/4 : ARG BuildMode
---> Running in 3bc49fbb0af4
Removing intermediate container 3bc49fbb0af4
Step 3/4 : ENV BuildMode=${BuildMode}
---> Running in 4c253fba0b36
Removing intermediate container 4c253fba0b36
---> c70f7f535d1f
Step 4/4 : RUN echo $BuildMode
---> Running in 5fef72f28975
"release"
Removing intermediate container 5fef72f28975
---> 4b5555223b5b
Successfully built 4b5555223b5b
Successfully tagged abc:1

关于docker - 如何将参数从文件传递给dockerfile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57091385/

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