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

Docker: Is there a limit to the number of build-arg's you can have?

我正在使用 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里面有space。它也可能导致上述错误。请检查您在 build-args 中传递的 $(ENV_VAL) 是否包含 space。为了避免这种情况。您可以将变量括在引号中。见下文:

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

3,如果您复制并粘贴了您的命令,请同时检查您的 docker 命令的格式。您的命令中可能有一些隐藏的格式导致了错误。

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