使用GitHub Actions推送Docker镜像至GitHub Packages失败求助
解决GitHub Actions推送Docker镜像到GitHub Packages权限被拒的问题
针对你遇到的denied: requested access to the resource is denied错误,以下是几个必查的解决方向:
1. 确认注册表和镜像名格式正确
GitHub Packages容器注册表的正确格式是ghcr.io/<OWNER>/<IMAGE_NAME>,其中:
<OWNER>是你的GitHub用户名或组织名称<IMAGE_NAME>是你的镜像名称(通常和仓库名一致,也可自定义)
检查你的REGISTRY和IMAGE_NAME环境变量:
REGISTRY必须设为ghcr.ioIMAGE_NAME必须包含你的用户名/组织名,比如my-username/my-app-image
2. 为GITHUB_TOKEN添加足够的权限
默认的GITHUB_TOKEN权限有限,推送镜像需要write:packages权限。在你的工作流jobs下添加权限配置:
jobs: build-and-push: permissions: packages: write contents: read # 若需要拉取仓库代码,需保留此权限 steps: # 你的其他步骤...
3. 确认镜像命名空间的所有权
你推送的镜像必须属于当前执行工作流的账号(github.actor)或其所在的组织:
- 个人仓库下,镜像名必须以你的用户名开头,比如
ghcr.io/john/my-image - 组织仓库下,镜像名必须以组织名开头,比如
ghcr.io/my-org/my-image,同时确保工作流执行账号拥有组织内的包推送权限
4. 检查组织级别的包设置(针对组织仓库)
如果是在组织下推送镜像,需确认组织设置允许创建和推送包:
- 进入组织的Settings → Packages → Package settings
- 确保相关权限配置允许工作流账号推送内容
内容的提问来源于stack exchange,提问作者Niranjan godbole
相关产品推荐
相关产品推荐

