【问题标题】:Github Actions: Push docker image build by gradle taskGithub Actions:通过 gradle 任务推送 docker 镜像构建
【发布时间】:2020-10-28 05:50:46
【问题描述】:

为了构建我当前项目的图像,我使用 gradle 任务 bootBuildImage。此任务创建一个OCI image using Cloud Native Buildpacks

- name: Build image with Gradle
  run: ./gradlew bootBuildImage

下一步我将尝试使用build-push-action 将此 docker 映像推送到我的私有 GitHub 注册表。

- name: Push image to Registry
  uses: docker/build-push-action@v1
  with:
    username: ${{ secrets.DOCKER_USERNAME }}
    password: ${{ secrets.DOCKER_PASSWORD }}
    registry: docker.pkg.github.com
    repository: sullrich84/wettkampfdb-backend
    tags: latest
  env:
    DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
    DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}

从日志中我可以看出,这一步的问题在于它似乎依赖于位于工作区根目录中的 Dockerfile,但它并不存在。

unable to prepare context: unable to evaluate symlinks in Dockerfile path: 
  lstat /github/workspace/Dockerfile: no such file or directory

是否可以在不使用/创建专用Dockerfile 的情况下将通过bootBuildImage 创建的图像推送到我的私人GitHub 注册表?

【问题讨论】:

    标签: docker github github-actions docker-push


    【解决方案1】:

    如果你只是在寻找处理docker push的东西,你可以使用原生的docker命令来做。

    类似的东西。

          - name: run docker push
            run: |
              @docker login -u $DOCKER_USERNAME -p $DOCKER_PASSWORD
              @docker push $BUILD_TAG
              @docker push $LATEST_TAG          
            env: 
              DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
              DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}  
    

    【讨论】:

      【解决方案2】:

      您使用的 github-action 不是用于推送您由 repositorytag 定义的图像,而是用于推送 build and push https://github.com/docker/build-push-action#build-push-action 的图像

      构建和推送 Docker 镜像,并在需要时登录 Docker 注册表。

      具体来说,这也与https://github.com/docker/build-push-action/issues/17 相关 - 所以只构建而不推送是可能的,反之亦然。

      此 github 操作还不允许仅推送。

      目前这对于很多 CI/CD 解决方案非常普遍,其中构建和推送是一项任务。

      【讨论】:

        【解决方案3】:

        我使用 gradle bootBuildImage 的 publishRegistry 选项。
        在你的 build.gradle 中设置参数(下面是 gradle.kts)

        tasks.bootBuildImage {
            imageName = "${imageName}:${project.version}"
            isPublish = true
            docker {
                publishRegistry {
                    url = dockerUrl
                    username = dockerUsername
                    password = dockerPassword
                }
            }
        }
        
        

        检查这个document

        【讨论】:

          猜你喜欢
          • 2021-12-10
          • 1970-01-01
          • 2021-09-30
          • 2023-02-20
          • 2021-06-05
          • 2023-02-17
          • 1970-01-01
          • 2021-02-27
          • 1970-01-01
          相关资源
          最近更新 更多