无法通过GitHub Actions向GitHub容器注册表(GHCR)推送Docker镜像
问题排查与解决方案
核心问题定位
你当前遇到的镜像没有出现在packages中的核心原因是docker/build-push-action@v1缺少必填的镜像地址配置项,日志中Pushing image []的空括号直接证明动作没有获取到要推送的镜像目标地址,虽然你在全局env中定义了REGISTRY和IMAGE_NAME,但没有显式传入动作的对应参数,所以仅完成了镜像构建,没有实际执行推送操作,动作的成功状态属于误报。
直接修复方案
修改工作流中「Build and push Docker image」步骤的配置,补充registry、repository、tags参数即可,修正后的配置如下:
- name: Build and push Docker image uses: docker/build-push-action@v1 with: registry: ${{ env.REGISTRY }} repository: ${{ env.IMAGE_NAME }} tags: latest # 可根据需求自定义标签,比如用commit hash作为标签 push: true
如果需要使用更稳定的新版构建动作,建议升级到docker/build-push-action@v4及以上版本,搭配docker/metadata-action自动生成镜像标签,兼容性和错误提示更完善。
其他可选排查点
如果修改配置后仍然无法看到镜像,可依次排查以下项:
- 仓库/组织权限校验:如果是组织下的仓库,确认组织设置中没有限制GitHub Actions的包写入权限,同时检查仓库设置的「Actions-常规」页面,是否开启了Actions的读写权限以及包管理权限。
- 包归属校验:GHCR默认会将首次推送的私有包归属到推送者的个人账号下,你可以先检查个人账号的packages列表是否存在对应镜像,进入包的设置页手动将其关联到目标仓库即可在仓库的packages菜单中看到。
- 完整日志排查:展开构建步骤的全量日志,检查是否存在静默的权限报错、镜像名称格式错误等问题,旧版本的build-push-action存在推送失败仍返回成功状态的bug。
内容的提问来源于stack exchange,提问作者d3vpasha
相关产品推荐
相关产品推荐

