【问题标题】:Docker build requires exactly 1 argumentDocker 构建只需要 1 个参数
【发布时间】:2020-12-10 12:54:43
【问题描述】:

当我在我的 gitlab 管道上运行这个命令时

docker build --build-arg NPM_TOKEN=${NPM_TOKEN} --tag $REGISTRY_IMAGE/web-public:$CI_COMMIT_SHA --tag $REGISTRY_IMAGE/web-public:$CI_COMMIT_REF_NAME packages/web-public

失败了

构建只需要 1 个参数

在我看来,我实际上是在传递一个参数,即路径; packages/web-public。据我所知,标志不是参数。

我在这里错过了什么?

这是我项目的结构

【问题讨论】:

    标签: docker gitlab-ci


    【解决方案1】:

    引用你的变量。这些变量中的某些内容正在扩展为不仅仅是标志的单个 arg。

    docker build --build-arg "NPM_TOKEN=${NPM_TOKEN}" --tag "$REGISTRY_IMAGE/web-public:$CI_COMMIT_SHA" --tag "$REGISTRY_IMAGE/web-public:$CI_COMMIT_REF_NAME" packages/web-public
    

    您还可以回显该命令以查看变量如何扩展,例如

    echo docker build ...
    

    【讨论】:

      【解决方案2】:

      来自https://docs.docker.com/engine/reference/commandline/build/

      docker build [OPTIONS] PATH | URL | -
      

      您的PATH 似乎有问题。尝试使用绝对路径或切换到包含Dockerfile 的目录并使用.

      另见:"docker build" requires exactly 1 argument(s)

      【讨论】:

      • 这似乎不是问题。看问题,我已经更新了。我已经阅读了您引用的两个链接,顺便说一句
      • 那么就是bmitch的答案中提到的你的变量扩展
      【解决方案3】:

      我的问题是我有一个多行脚本条目,例如

      script:
          - >
            docker build \
            --network host \
            -t ${CI_REGISTRY}/kylehqcom/project/image:latest \
            ....
      

      只要我添加到一行,我们就没事了。所以我猜在第一行之后换行符被“输入”了,这意味着后续行被忽略并返回错误。另请注意,我通过 GitLab ui 进行了 CI 检测,所有语法均正确。

      【讨论】:

        猜你喜欢
        • 2023-03-16
        • 2021-02-06
        • 2016-03-29
        • 2021-12-10
        • 2016-06-07
        • 2015-05-13
        • 2020-04-08
        • 1970-01-01
        • 2014-04-30
        相关资源
        最近更新 更多