簡體   English   中英

Github 操作:構建和推送 docker 映像失敗。 服務器消息:insufficient_scope:授權失敗

[英]Github action: Build and push docker image fails. server message: insufficient_scope: authorization failed

我正在使用 GitHub 操作“ 構建和推送 Docker 映像”,因為它來自 Docker 和一個評價最高的驗證操作。

我的 YAML 文件的相關片段如下

  - name: Set up QEMU
    uses: docker/setup-qemu-action@v1
  - name: Set up Docker Buildx
    uses: docker/setup-buildx-action@v1
  - name: Login to DockerHub
    uses: docker/login-action@v1
    with:
      username: ${{ secrets.DOCKERHUB_USERNAME }}
      password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN }}
  - name: Build and push
    id: docker_build
    uses: docker/build-push-action@v2
    with:
      push: true
      tags: user/app:latest
  - name: Image digest
    run: echo ${{ steps.docker_build.outputs.digest }}

正如示例中所示 當工作流運行時,我一直看到錯誤

10 [stage-1 2/2] COPY --from=build /workspace/target/*.jar app.jar
#10 DONE 0.9s

#12 exporting to image
#12 exporting layers
#12 exporting layers 4.3s done
#12 exporting manifest sha256:dafb0869387b325491aed0cdc10c2d0206aca28006b300554f48e4c389fc3bf1 done
#12 exporting config sha256:f64316c3b529b43a6cfcc933656c77e556fea8e5600b6d0cce8dc09f775cf107 done
#12 pushing layers
#12 pushing layers 0.8s done
#12 ERROR: server message: insufficient_scope: authorization failed
------
 > exporting to image:
------
failed to solve: rpc error: code = Unknown desc = server message: insufficient_scope: authorization failed
Error: The process '/usr/bin/docker' failed with exit code 1

我的標准 spring-boot 應用程序的 Dockerfile 的內容如下所示

FROM maven:3.6.3-jdk-11-slim AS build
RUN mkdir -p /workspace
WORKDIR /workspace
COPY pom.xml /workspace
COPY src /workspace/src
RUN mvn -B -f pom.xml clean package -DskipTests

FROM openjdk:11-jdk-slim
COPY --from=build /workspace/target/*.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","app.jar"]

任何線索如何解決這個問題?

當使用不同的 GitHub 操作時,我可以發布到 docker-hub,如下所示

  - name: Build and push docker image
    uses: elgohr/Publish-Docker-Github-Action@master
    with:
      name: bloque/sales-lead-management
      username: ${{ secrets.DOCKERHUB_USERNAME }}
      password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN }}

您需要在使用 Docker 的build-push-action時設置路徑上下文。 它應該看起來像這樣:

 - name: Build and push
   id: docker_build
   uses: docker/build-push-action@v2
   with:
     context: .
     file: Dockerfile
     push: true
     tags: user/app:latest

file選項完全是可選的,但如果省略,它將在根目錄中找到 Dockerfile。

還建議使用為 Docker 映像提供更多相關元數據和標簽的元數據操作

這是我在幾個項目中如何為 Spring Boot 應用程序執行此操作的示例: https ://github.com/moja-global/FLINT.Reporting/blob/d7504909f8f101054e503a2993f4f70ca92c2577/.github/workflows/docker.yml#L153

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM