我的单docker build
命令行变得越来越长。我想知道是否有更好的方法,而不是设置Dockerfile中的所有ARG
,然后--build-arg
通过docker build
命令设置{{1}}。
答案 0 :(得分:0)
不幸的是,没有内置的可能性来指定带有构建参数的文件来使用docker build
。
但无论如何我们可以使用简单的bash包装器:
1。我们使用build args创建文件。像args_list
:
month=March
day=26
year=2018
2。 Dockerfile
的一个例子是:
FROM alpine:3.7
ARG month
ARG day
ARG year
RUN echo "Today is the $day/$month/$year."
3。使用以下一行脚本构建我们的上述docker镜像:
command="docker build ."; for i in $(cat args_list); do command+=" --build-arg $i"; done; $command
输出显示所有内容都已成功注入:
Sending build context to Docker daemon 3.072kB
Step 1/5 : FROM alpine:3.7
---> 3fd9065eaf02
Step 2/5 : ARG month
---> Running in 5c6e695c3fab
Removing intermediate container 5c6e695c3fab
---> 6193d0d5665f
Step 3/5 : ARG day
---> Running in da0bc3e65890
Removing intermediate container da0bc3e65890
---> 41a90a4dd893
Step 4/5 : ARG year
---> Running in 83f6ae68390d
Removing intermediate container 83f6ae68390d
---> 1fd4beef3c53
Step 5/5 : RUN echo "Today is the $day/$month/$year."
---> Running in b5eaa6a5a80c
Today is the 26/March/2018.
Removing intermediate container b5eaa6a5a80c
---> de7581671706
Successfully built de7581671706
通过这种方式,我们可以简单地将新的构建args添加到“build args”文件中,我们的CI系统将构建正确的图像而不需要进行任何更改。