相当于build-arg的--env-file?

时间:2017-04-18 13:43:02

标签: docker

我正在使用多个构建参数构建Docker镜像,并且想知道是否可以将它们作为文件传递给docker build,同样--env-file可以设置为{{ 1}}。 env文件将由docker run自动解析,变量在容器中可用。

是否可以以相同的方式指定构建参数的文件?

2 个答案:

答案 0 :(得分:3)

至少就目前而言,没有这样的选择。但是如果你有太多的构建参数并希望将它保存在一个文件中,你可以按如下方式将其存档:

  1. 将以下shell保存到buildargs.sh,使其可执行并将其放入PATH

    #!/bin/bash
    awk '{ sub ("\\\\$", " "); printf " --build-arg %s", $0  } END { print ""  }' $@
    
  2. 使用argfile构建您的图片,如:

    docker build $(buildargs.sh argfile) -t your_image .
    

答案 1 :(得分:0)

此代码对于包含空格和特殊字符的build-arg是安全的:

for arg in buildarg1 buildarg2 ; do opts+=(--build-arg "$arg") ; done

...

docker run ... "${opts[@]}"

只需替换 buildarg1 等等,您的build-arg就会被转义。