jor*_*vin 10 docker dockerfile
我正在尝试将参数从文件传递到 docker 文件。
我尝试将文件复制到 docker 容器中并使用 source 命令。
COPY docker.env .
RUN /bin/bash -c "source docker.env"
Run Code Online (Sandbox Code Playgroud)
BuildMode="release"
Run Code Online (Sandbox Code Playgroud)
export BuildMode="release"
Run Code Online (Sandbox Code Playgroud)
没有错误,但是当我尝试打印时ECHO $BuildMode,它没有打印其中的值,就像它没有获取其中的值一样。
但是,如果我创建一个 docker 容器并在 docker 容器内尝试相同的代码,那么它就可以工作。
atl*_*ine 14
然后就可以使用了--build-arg,构建的时候会--build-arg key=value向dockerfile传递参数,参考这个。
您只需要使用从 env 文件中获取并将它们组合为构建 dockerfile 时的sed格式,示例如下:--build-arg key=value
文档文件:
FROM ubuntu:16.04
ARG BuildMode
ENV BuildMode=${BuildMode}
RUN echo $BuildMode
Run Code Online (Sandbox Code Playgroud)
docker.env:
BuildMode="release"
Run Code Online (Sandbox Code Playgroud)
命令:
docker build -t abc:1 $(cat docker.env | sed 's@^@--build-arg @g' | paste -s -d " ") . --no-cache
Run Code Online (Sandbox Code Playgroud)
输出:
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
Run Code Online (Sandbox Code Playgroud)
我遇到了空格和旧macOS bash version 3的问题。由于我必须为每个使用 macOS 的人工作,所以我必须采取变通办法并提出这个解决方案
while IFS= read -r line; do
echo $line
opts+=(--build-arg "$line")
done < ".ENV.FILE"
docker build "${opts[@]}" -t ${IMAGE_NAME}:${DTAG} -t ${IMAGE_NAME}:${K8S_NS} .
Run Code Online (Sandbox Code Playgroud)
哪里.ENV.FILE看起来像这样:
APP_PORT=3030
APP_HOST=0.0.0.0
APP_API_URL=FOO
APP_API_WHITE=S P A C E
Run Code Online (Sandbox Code Playgroud)
我希望它能帮助别人
| 归档时间: |
|
| 查看次数: |
20725 次 |
| 最近记录: |