From b0330ce1d89a70cd447634cc3ab935b5abf9b322 Mon Sep 17 00:00:00 2001 From: Tao Wang Date: Mon, 28 Nov 2016 10:53:44 +1100 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=20--build-arg=20=E7=9A=84?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E7=9A=84=E8=AF=B4=E6=98=8E=E4=BB=A5=E9=80=82?= =?UTF-8?q?=E5=BA=94=20Docker=201.13=20=E7=9A=84=E5=8F=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Tao Wang --- image/dockerfile/arg.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/image/dockerfile/arg.md b/image/dockerfile/arg.md index ef12c45..c203bd2 100644 --- a/image/dockerfile/arg.md +++ b/image/dockerfile/arg.md @@ -4,4 +4,6 @@ 构建参数和 `ENV` 的效果一样,都是设置环境变量。所不同的是,`ARG` 所设置的构建环境的环境变量,在将来容器运行时是不会存在这些环境变量的。但是不要因此就是用 `ARG` 保存密码之类的信息,因为 `docker history` 还是可以看到所有值的。 -`Dockerfile` 中的 `ARG` 指令是定义参数名称,以及定义其默认值。该默认值可以在构建命令 `docker build` 中用 `--build-arg <参数名>=<值>` 来覆盖。`--build-arg` 中的参数名,必须在 `Dockerfile` 中用 `ARG` 定义过了。如果对应参数并未定义,那么构建时将会得到报错。 +`Dockerfile` 中的 `ARG` 指令是定义参数名称,以及定义其默认值。该默认值可以在构建命令 `docker build` 中用 `--build-arg <参数名>=<值>` 来覆盖。 + +在 1.13 之前的版本,要求 `--build-arg` 中的参数名,必须在 `Dockerfile` 中用 `ARG` 定义过了,换句话说,就是 `--build-arg` 指定的参数,必须在 `Dockerfile` 中使用了。如果对应参数没有被使用,则会报错退出构建。从 1.13 开始,这种严格的限制被放开,不再报错退出,而是显示警告信息,并继续构建。这对于使用 CI 系统,用同样的构建流程构建不同的 `Dockerfile` 的时候比较有帮助,避免构建命令必须根据每个 Dockerfile 的内容修改。