Docker:您可以拥有的 build-arg 数量有限制吗?

问题描述

我正在使用 Azure 管道并尝试构建 docker 映像,但遇到此错误

"docker build" requires exactly 1 argument.

我有超过 20 个 --build-arg ENV_VAL=$(ENV_VAL)(示例),我想可能是由于构建参数的数量而引发了该错误

有人有想法吗?

解决方法

参见this,包括--build-arg在内的所有选项都被视为options而不是arg

flags.Var(&options.buildArgs,"build-arg","Set build-time variables")

因此,对于 docker build,只需要一个参数,即 build context,参见 this

options.context = args[0]

错误 "docker build" requires exactly 1 argument. 来自 here,表示您没有指定 build context,与 --build-arg 无关。

,

1,可能是你的 docker 命令末尾缺少 . 引起的。

docker build -f MyDockerfile -t proj:myapp .

末尾的 . 将构建上下文指定为当前工作目录。

2、如果你传递的build-args里面有空格。它也可能导致上述错误。请检查您在 build-args 中传递的 $(ENV_VAL) 中是否有空格。为了避免这种情况。您可以将变量括在引号中。见下文:

 --build-arg ENV_VAL="$(ENV_VAL)"

3,如果你复制粘贴了你的命令,还请检查你的docker命令的格式。您的命令中可能存在一些导致错误的隐藏格式。

如果您在 azure 管道中使用 docker 任务。您可以选择 Build context 的路径。选择 ** 将构建上下文设置为 dockerfile 所在的文件夹。

enter image description here