You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitHub Action中Docker构建与推送权限问题求助

GitHub Action Docker构建与镜像推送故障排查与解决

1. ./mvnw权限拒绝问题

问题现象

本地Docker构建正常,但GitHub Action中执行Docker构建时,出现/bin/sh: ./mvnw: Permission denied错误。

原因分析

Git默认不会保留文件的执行权限,当通过actions/checkout拉取代码时,mvnw的可执行权限丢失,导致Docker构建过程中无法运行该脚本。

解决方法

有两种可行方案:

  • 方案一:修复Git仓库中mvnw的权限
    在本地项目目录执行以下命令,将mvnw的执行权限提交到Git仓库:

    chmod +x mvnw
    git add mvnw
    git commit -m "Add execute permission to mvnw"
    git push
    

    之后GitHub Action拉取的代码会包含正确的执行权限,无需修改Dockerfile。

  • 方案二:在Dockerfile中强制添加权限
    确保在COPY mvnw后立即执行chmod命令(你的Dockerfile已包含此步骤,但如果Git权限丢失,此步骤仍能生效):

    COPY mvnw pom.xml ./
    RUN chmod +x ./mvnw
    RUN ./mvnw dependency:go-offline
    

2. Docker Hub镜像推送权限被拒问题

问题现象

Docker构建成功,但推送镜像至Docker Hub时提示denied: requested access to the resource is denied,已配置Docker Hub密钥但问题依旧。

原因分析

  • 镜像标签中的用户名与Docker Hub登录用户名不一致;
  • Docker Hub访问令牌/密码配置错误;
  • 目标Docker Hub仓库不存在或当前用户无推送权限。

解决方法

  1. 修正镜像标签
    在docker/build-push-action步骤中,将硬编码的user/app:latest替换为与Docker Hub用户名一致的标签,例如使用配置的secrets变量:

    - name: Build and push
      uses: docker/build-push-action@v3
      with:
        push: true
        tags: ${{ secrets.DOCKERHUB_USERNAME }}/app:latest, ${{ secrets.DOCKERHUB_USERNAME }}/app:${{ env.TAG }}
    

    确保标签前缀是你的Docker Hub用户名,否则会因仓库归属问题被拒绝。

  2. 验证Docker Hub密钥配置

    • 确认GitHub仓库的Secrets and variables中,DOCKERHUB_USERNAME是你的Docker Hub账号名;
    • DOCKERHUB_PASSWORD建议使用Docker Hub的访问令牌(而非账号密码),访问令牌需在Docker Hub账号设置中生成,并赋予仓库推送权限;
    • 检查密钥是否拼写正确,无多余空格或特殊字符。
  3. 确认Docker Hub仓库存在
    登录Docker Hub,确认${{ secrets.DOCKERHUB_USERNAME }}/app仓库已创建,若未创建需手动创建公开或私有仓库。


内容的提问来源于stack exchange,提问作者Masi Boo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 12:15:38