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

GCP Cloud Run未正确加载指定修订版本求助排查

问题排查与解决步骤

针对你遇到的Cloud Run部署后仍出现旧版本错误的问题,尽管UI显示镜像SHA正确,可按以下步骤排查:

1. 直接使用镜像Digest强制部署

标签存在被覆盖或缓存歧义的可能,直接用唯一的镜像Digest部署,确保Cloud Run拉取绝对正确的镜像内容:

gcloud run deploy $(API_NAME) --image gcr.io/image2paint/image2paint-api@sha256:cead5c33f468[完整Digest] --port 8000 --memory $(API_MEMORY) --cpu $(API_CPU) --max-instances $(API_MAX_SCALE) --timeout 5m

2. 检查修订版启动日志

进入Cloud Run控制台,找到对应服务的目标修订版详情,查看启动阶段的日志(而非请求日志):

  • 确认容器启动时的代码目录结构,检查serving模块是否存在
  • 查看Poetry依赖安装日志,确认是否加载了正确的依赖版本,是否有旧警告残留

3. 验证远程镜像内容与本地一致性

将GCR上的镜像拉到本地,检查内容是否与你本地运行的0.2.0版本一致:

# 拉取远程镜像
docker pull gcr.io/image2paint/image2paint-api:0.2.0
# 进入容器交互式检查
docker run --rm -it gcr.io/image2paint/image2paint-api:0.2.0 bash

在容器内执行以下命令验证:

# 检查serving模块是否存在
python -c "import serving; print(serving.__file__)"
# 检查Poetry依赖状态
poetry show

4. 触发全新部署绕过潜在缓存

Cloud Run可能存在容器层缓存,可通过修改一个无关配置触发全新部署,比如临时调整内存参数:

# 临时修改内存部署
gcloud run deploy $(API_NAME) --image $(DOCKER_IMAGE) --port 8000 --memory 512Mi --cpu $(API_CPU) --max-instances $(API_MAX_SCALE) --timeout 5m
# 改回原内存配置
gcloud run deploy $(API_NAME) --image $(DOCKER_IMAGE) --port 8000 --memory $(API_MEMORY) --cpu $(API_CPU) --max-instances $(API_MAX_SCALE) --timeout 5m

5. 检查Dockerfile构建逻辑

确认Dockerfile是否存在可能导致旧代码残留的缓存问题:

  • 确保先复制poetry.lock和pyproject.toml,再复制项目代码,避免依赖层缓存覆盖代码更新
  • 检查PYTHONPATH环境变量设置,确保项目根目录在Python的模块搜索路径中(例如ENV PYTHONPATH=/app)

6. 确认流量全部分配到最新修订版

进入Cloud Run服务的「修订版」页面,检查流量分配比例,确保100%流量指向标记为“已选中”的最新修订版,无旧修订版分流。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 03:47:17