无法使用GitHub Actions推送Docker镜像。

huangapple go评论123阅读模式
英文:

unable to push docker image using github actions

问题

这是您的代码部分翻译:

  1. 我正在尝试创建一个 Docker 镜像并将其推送到 GitHub
  2. 这是我的 `main.yml` 文件:

name: Docker

on:
push:
branches:
- master

env:

TODO: 更改变量为您的镜像名称。

IMAGE_NAME: java-app

jobs:
push:
runs-on: ubuntu-latest

  1. steps:
  2. - name: 检出代码
  3. uses: actions/checkout@v2
  4. - name: 构建镜像
  5. run: docker build --file ./docker/Dockerfile --tag ${{ env.IMAGE_NAME }} .
  6. - name: 登录到注册表
  7. run: docker login -u ${{ secrets.DOCKERHUB_USERNAME }} -p ${{ secrets.DOCKERHUB_PASSWORD }} registry.hub.docker.com
  8. - name: 推送镜像
  9. run: |
  10. IMAGE_ID=${{ secrets.DOCKERHUB_USERNAME }}/qfix-test
  11. # 从版本中去除 git 引用前缀
  12. VERSION=$(echo "${{ github.ref }}" | sed -e 's,.*/\(.*\),,')
  13. # 去除标签名称中的 "v" 前缀
  14. [[ "${{ github.ref }}" == "refs/tags/"* ]] && VERSION=$(echo $VERSION | sed -e 's/^v//')
  15. # 使用 Docker 的 'latest' 标签约定
  16. [ "$VERSION" == "master" ] && VERSION=latest
  17. echo IMAGE_ID=$IMAGE_ID
  18. echo VERSION=$VERSION
  19. docker tag ${{ env.IMAGE_NAME }} $IMAGE_ID:$VERSION
  20. docker push $IMAGE_ID:$VERSION
  1. 这里是错误信息:

推送引用到仓库 [docker.io/***/java-app]
d1eab8b60748: 等待中
未经授权: 访问令牌权限不足
错误: 进程以退出码 1 完成。

  1. 我已经创建了两个密钥,一个是 `dockerhub_username`,另一个是 `dockerhub_password`,其中包含具有读、写和删除权限的访问令牌。我不知道我在这里做错了什么。
英文:

I am trying to create a docker image and push it on github.
here's my main.yml

  1. name: Docker
  2. on:
  3. push:
  4. branches:
  5. - master
  6. env:
  7. # TODO: Change variable to your image's name.
  8. IMAGE_NAME: java-app
  9. jobs:
  10. push:
  11. runs-on: ubuntu-latest
  12. steps:
  13. - name: Checkout code
  14. uses: actions/checkout@v2
  15. - name: Build image
  16. run: docker build --file ./docker/Dockerfile --tag ${{ env.IMAGE_NAME }} .
  17. - name: Log into registry
  18. run: docker login -u ${{ secrets.DOCKERHUB_USERNAME }} -p ${{ secrets.DOCKERHUB_PASSWORD }} registry.hub.docker.com
  19. - name: Push image
  20. run: |
  21. IMAGE_ID=${{ secrets.DOCKERHUB_USERNAME }}/qfix-test
  22. # Strip git ref prefix from version
  23. VERSION=$(echo "${{ github.ref }}" | sed -e 's,.*/\(.*\),,')
  24. # Strip "v" prefix from tag name
  25. [[ "${{ github.ref }}" == "refs/tags/"* ]] && VERSION=$(echo $VERSION | sed -e 's/^v//')
  26. # Use Docker `latest` tag convention
  27. [ "$VERSION" == "master" ] && VERSION=latest
  28. echo IMAGE_ID=$IMAGE_ID
  29. echo VERSION=$VERSION
  30. docker tag ${{ env.IMAGE_NAME }} $IMAGE_ID:$VERSION
  31. docker push $IMAGE_ID:$VERSION

Here's the error:

  1. The push refers to repository [docker.io/***/java-app]
  2. d1eab8b60748: Waiting
  3. unauthorized: access token has insufficient scopes
  4. Error: Process completed with exit code 1.

I have created 2 secrets one with dockerhub_username, dockerhub_password which has the access token with read, write and delete permissions. I don't know what I am doing wrong here.

答案1

得分: 1

我弄清楚了!
问题是登录方式不正确。
正确的方式是:

  1. -
  2. name: 登录到 Docker Hub
  3. uses: docker/login-action@v2
  4. with:
  5. username: ${{ secrets.DOCKERHUB_USERNAME }}
  6. password: ${{ secrets.DOCKERHUB_TOKEN }}

一旦我用上面的登录方式替换了这个 run: docker login -u ${{ secrets.DOCKERHUB_USERNAME }} -p ${{ secrets.DOCKERHUB_PASSWORD }} registry.hub.docker.com,就可以正常工作了!

详细信息可以在这里找到:https://docs.docker.com/build/ci/github-actions/

英文:

I figured it out!
The issue was that it was the wrong way to login.
The correct way is:

  1. -
  2. name: Login to Docker Hub
  3. uses: docker/login-action@v2
  4. with:
  5. username: ${{ secrets.DOCKERHUB_USERNAME }}
  6. password: ${{ secrets.DOCKERHUB_TOKEN }}

As soon as I replaced this run: docker login -u ${{ secrets.DOCKERHUB_USERNAME }} -p ${{ secrets.DOCKERHUB_PASSWORD }} registry.hub.docker.com with the above login it worked!

Details can be found here: https://docs.docker.com/build/ci/github-actions/

huangapple
  • 本文由 发表于 2023年6月26日 19:09:19
  • 转载请务必保留本文链接:https://go.coder-hub.com/76556121.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定