【问题标题】:Docker: Is there a limit to the number of build-arg's you can have?Docker:你可以拥有的 build-arg 的数量有限制吗?
【发布时间】:2021-04-11 21:51:56
【问题描述】:

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

"docker build" requires exactly 1 argument.

我有超过 20 个 --build-arg ENV_VAL=$(ENV_VAL)(示例),并且正在考虑可能由于构建参数的数量而引发该错误。

有人有想法吗?

【问题讨论】:

  • 要了解更多信息,您能否将整个 docker build 命令粘贴到完整的错误中。
  • 您是否确保提供构建上下文作为最终参数?这个错误以前出现过。就像@mchawre 说的那样,如果可能的话,您能否分享您的实际命令?

标签: azure docker azure-devops azure-pipelines docker-build


【解决方案1】:

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 所在的文件夹。

【讨论】:

  • 将构建 arg 值用双引号括起来“有效。
  • @HarveyConnor 太好了,它解决了这个问题。你能接受上面的答案吗?因为它起作用了。谢谢!
【解决方案2】:

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

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

所以,对于docker build,只需要一个arg,它是build context,请参阅this

options.context = args[0]

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

【讨论】:

    猜你喜欢
    • 2017-07-06
    • 1970-01-01
    • 2018-06-27
    • 1970-01-01
    • 1970-01-01
    • 2021-03-06
    • 1970-01-01
    • 1970-01-01
    • 2017-07-04
    相关资源
    最近更新 更多