有没有比在构建Dockerfile时在命令行上重复--build-arg更好的方法?

时间:2018-03-25 12:48:11

标签: docker

我的单docker build命令行变得越来越长。我想知道是否有更好的方法,而不是设置Dockerfile中的所有ARG,然后--build-arg通过docker build命令设置{{1}}。

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系统将构建正确的图像而不需要进行任何更改。