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

为Cloud Run实例添加Cloud SQL连接时镜像缺失报错求助

解决Firebase Functions V2生成的Cloud Run镜像找不到问题

核心原因

Firebase Functions V2构建的镜像默认存在gcf-artifacts这个Artifact Registry仓库中,该仓库有默认的自动生命周期清理规则,会定期删除临时镜像,这就是你之前可用的镜像消失的关键原因。另外,手动修改Cloud Run服务的操作,不会触发Firebase的镜像保留机制,进一步导致镜像无法被找到。

解决方案

1. 通过Firebase直接配置Cloud SQL连接(推荐)

无需手动修改Cloud Run,直接在firebase.json中为函数添加Cloud SQL实例配置,Firebase会自动处理镜像同步和Cloud Run部署:

{
  "functions": {
    "v2": {
      "<你的函数名称>": {
        "cloudSqlInstances": "<项目ID>:us-west1:<Cloud SQL实例名称>"
      }
    }
  }
}

执行部署命令:

firebase deploy --only functions:<你的函数名称>

2. 持久化镜像到自定义Artifact Registry仓库

如果必须手动操作Cloud Run,先将Firebase生成的镜像复制到自己的自定义仓库,避免被自动清理:

  • 重新部署函数,确保镜像重新生成:
    firebase deploy --only functions:<你的函数名称>
    
  • 将镜像复制到提前创建好的自定义仓库:
    gcloud artifacts docker tags us-central1-docker.pkg.dev/<项目ID>/gcf-artifacts/<镜像名称> us-central1-docker.pkg.dev/<项目ID>/<自定义仓库名称>/<镜像名称>
    
  • 使用自定义镜像更新Cloud Run并添加Cloud SQL连接:
    gcloud run services update <Cloud Run服务名称> --image us-central1-docker.pkg.dev/<项目ID>/<自定义仓库名称>/<镜像名称> --add-cloudsql-instances=<项目ID>:us-west1:<Cloud SQL实例名称>
    

3. 调整gcf-artifacts仓库的生命周期规则

如果希望保留gcf-artifacts里的镜像,可修改仓库的自动清理规则:

  • 打开Artifact Registry控制台,找到gcf-artifacts仓库
  • 进入「生命周期」标签,删除或调整现有规则(比如延长镜像保留时长)

4. 检查Cloud Run服务账号权限

确保Cloud Run使用的服务账号拥有roles/artifactregistry.reader权限,否则即使镜像存在也会提示找不到:

gcloud projects add-iam-policy-binding <项目ID> --member="serviceAccount:<Cloud Run服务账号>" --role="roles/artifactregistry.reader"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 09:12:47