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

AWS ECS部署ECR更新后的Docker镜像后变更未生效问题求助

ECS部署.NET Core镜像更新不生效排查方案

1. 镜像与ECR侧校验

  • 确认镜像推送时是否使用了固定标签(如latest):ECS默认镜像拉取策略为IfNotPresent,若ECS节点上已存在同标签的旧镜像,不会主动拉取ECR上的新镜像,需在任务定义中显式配置"pullPolicy": "Always"解决
  • 本地拉取ECR上对应标签的镜像,运行后验证功能是否为更新后的版本,避免构建、推送环节出错,新镜像未成功上传到ECR
  • 核对任务定义中的镜像URI,需和ECR上的镜像地址完全匹配,包含AWS账号ID、区域、仓库名、标签四个部分,任意一处错误都会拉取到旧镜像或错误镜像

2. ECS配置校验

  • 确认更新ECS服务时已指定最新的任务定义修订版本,避免更新服务时漏选新版本,继续沿用旧任务定义
  • 检查ECS服务部署参数:最小健康百分比、最大百分比配置是否合理,若最小健康百分比设为100%、最大百分比也为100%,旧任务不会被终止,新任务无法启动替换
  • 查看ECS运行中任务的详情,确认其关联的任务定义版本、镜像URI是否为预期的最新版本,同时查看任务启动日志,排查是否存在拉取镜像失败、自动回滚到旧版本的报错
  • 若使用Fargate启动类型,确认是否开启了任务自动回滚功能,若新任务健康检查不通过,ECS会自动回滚到上一个稳定版本,导致更新看起来未生效

3. 流量与应用侧校验

  • 排查访问入口的缓存问题:负载均衡(ALB/CLB)缓存规则、CDN缓存、客户端本地缓存、浏览器缓存都可能导致展示旧版本内容
  • 直接通过ECS任务的内网IP+端口访问应用,验证返回内容是否为更新后的版本,排除上层流量组件的干扰
  • 查看.NET Core应用的启动日志,核对启动时间、版本号等标识是否匹配新镜像的构建时间,确认当前运行的是新启动的应用进程
  • 若你的.NET Core应用配置了本地缓存、静态资源预编译逻辑,确认镜像构建时已清理旧缓存文件,避免新镜像内仍然打包了旧的静态资源或配置

快速定位方法

给新镜像打唯一的非重复标签(比如用构建时间戳v202405201430),更新任务定义使用该新标签的镜像URI,再更新ECS服务,若此时更新生效,则可判定问题是由latest等重复标签的拉取策略缓存导致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 09:42:01