有没有办法使用 github 操作插件 docker/build-push-action@v1 设置 docker 构建的路径

问题描述 投票:0回答:4

我有一个如下的 docker 构建操作

      - name: build-push
        uses: docker/build-push-action@v1
        with:
          username: ${{ DOCKER_USERNAME }}
          password: ${{ DOCKER_PASSWORD }}
          repository: <repo>
          tags: tag
          push: true
          dockerfile: ./<path-to-dockerfile>/Dockerfile

dockerfile 包含向 docker 映像添加一些文件的说明,如下所示

ADD file1 .
ADD file2 .
ADD file3 .

github的结构是:

-.github
-folder1------------
                   |
                   folder2-------------
                                       |
               -----------------------docker--------
               |             |           |          |
            file1          file2        file3      Dockerfile

问题是 GitHub 操作无法找到 file1file2file3,因为它在 folder1 级别查找。产生的错误是

ADD failed: file not found in build context or excluded by .dockerignore: file1: file does not exist

我不想将dockerfile中的路径修改为

 ADD ./folder1/folder2/file1 .
。 那么如何使用 docker/build-push-action@v1 从 GitHub Action 部分添加路径或更改目录?

docker github dockerfile github-actions
4个回答
3
投票

不要使用 docker/build-push-action@v1,而是使用 docker/build-push-action@v2,因为 v1 是旧版本。 修改GitHub动作如下

  - name: Login to Docker Hub
    uses: docker/login-action@v1
    with:
      username: ${{ secrets.DOCKER_USERNAME }
      password: ${{ secrets.DOCKER_PASSWORD }}
  - name: build-push
        uses: docker/build-push-action@v2
        with:
          context: ./folder1/folder2/docker/
          tags: tag
          push: true
          dockerfile: ./<path-to-dockerfile>/Dockerfile

context 与 github 操作一起使用将解决此问题。 Context 仅适用于 v2 版本。


3
投票
- name: Login to Docker Hub
    uses: docker/login-action@v3
    with:
      username: ${{ secrets.DOCKER_USERNAME }
      password: ${{ secrets.DOCKER_PASSWORD }}
  - name: build-push
        uses: docker/build-push-action@v3
        with:
          context: ./folder1/folder2/docker/
          tags: tag
          push: true
          file: ./<path-to-dockerfile>/Dockerfile

0
投票
      context: "{{defaultContext}}:subdirectory"

https://github.com/docker/build-push-action#git-context


0
投票

只是为了提供有关 build-push-action 的 contextfile 关键字之间差异的更多信息。

  • file - 指定文件系统范围(即存储库结构)中 Dockerfile 的位置(以及可能存在偏差的名称)
  • context - 指定实际构建映像时要使用的工作目录,即它设置 docker build 命令的上下文,并将相应地使用此上下文执行 Dockerfile 中指定的所有指令。因此,Dockerfile 内的所有相对路径引用都必须与上下文匹配。
© www.soinside.com 2019 - 2024. All rights reserved.