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

将Strapi Docker容器推送至Google Cloud Run时遭遇unauthorized权限认证错误求助

解决GCR镜像推送权限错误的方案

我来帮你排查这个推送Strapi镜像到Google Container Registry(GCR)时遇到的权限认证问题,之前我也碰到过类似的情况,咱们一步步来解决:

1. 确认服务账号的权限绑定对象与范围

虽然你已经配置了Container Registry和Storage Admin权限,但要注意:

  • 这些权限必须是绑定在目标GCP项目级别,而不是某个子资源(比如单个存储桶)上。
  • 登录GCP控制台的IAM页面,找到你的服务账号service_user,检查它的角色是否确实应用到了gcr.io/project_name对应的GCP项目中(注意是项目ID,不是显示名称)。

2. 确保Docker使用正确的认证配置

你用了sudo docker命令操作镜像,这意味着Docker会读取root用户的配置文件(路径为/root/.docker/config.json),而不是普通用户的~/.docker/config.json。可以通过以下方式修复:

  • 重新以root身份配置Docker认证:
    sudo gcloud auth configure-docker
    
  • 或者将普通用户的认证配置复制到root目录:
    sudo cp ~/.docker/config.json /root/.docker/
    

3. 验证镜像标签的准确性

确认你使用的project_name是GCP项目的唯一ID(不是项目的显示名称,ID通常是小写字母、数字和连字符组成的短字符串)。如果标签中的项目ID错误,会导致推送的仓库不存在,进而触发权限错误。

4. 重置服务账号认证

有时候认证缓存会导致异常,尝试重新认证:

# 撤销当前服务账号的认证
gcloud auth revoke service_user@<你的项目ID>.iam.gserviceaccount.com
# 重新激活服务账号
gcloud auth activate-service-account service_user --key-file=service_user.json
# 再次配置Docker认证(确保root用户生效)
sudo gcloud auth configure-docker

5. 检查GCR对应的存储桶权限

GCR的镜像实际存储在GCS存储桶artifacts.<你的项目ID>.appspot.com中,你可以:

  • 登录GCP控制台的Cloud Storage页面,找到这个存储桶。
  • 检查存储桶的权限设置,确认你的服务账号拥有Storage Admin或Storage Object Creator权限(不过你已经配置了项目级的Storage Admin,这一步通常可以跳过,除非桶的权限被单独修改过)。

完成以上步骤后,再执行推送命令:

sudo docker push gcr.io/project_name/strapi

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 19:59:05