AWS CDK执行cdk deploy未检测Docker文件变更 如何强制重新构建镜像
解决方案
CDK默认通过计算资产目录下所有文件的哈希值判断是否需要重新构建镜像,修改entrypoint.sh后未触发构建,可按以下方案处理:
- 检查忽略文件规则
首先查看./back目录下的.dockerignore、项目根目录的.gitignore文件,确认是否配置了*.sh或者entrypoint.sh的忽略规则。CDK计算资产哈希时默认会遵循这两个文件的过滤规则,如果entrypoint.sh被过滤,修改后不会被纳入哈希计算,自然不会触发构建。如果存在对应忽略规则,直接删除规则,或添加一行!entrypoint.sh强制包含该文件即可。 - 额外添加哈希参数
可以在定义镜像时增加extra_hash参数,只要该参数的值发生变更,CDK就会判定镜像资产发生变化,触发重新构建:
每次需要强制更新镜像时,修改image=ecs.ContainerImage.from_asset('./back', extra_hash="v2")extra_hash的取值即可。 - 部署时添加强制参数
执行cdk deploy命令时添加--force参数,可跳过哈希检测逻辑,强制CDK重新构建所有容器镜像资产:cdk deploy --force - 新增环境变量触发更新
也可以在任务镜像配置中新增无业务影响的环境变量,修改环境变量的取值会触发任务定义更新,同时也会触发镜像重新构建:task_image_options=aws_ecs_patterns.ApplicationLoadBalancedTaskImageOptions( image=ecs.ContainerImage.from_asset('./back'), environment={ "BUILD_VERSION": "2024052001" # 每次修改取值即可触发更新 } )
内容的提问来源于stack exchange,提问作者Constantin De La Roche
相关产品推荐
相关产品推荐

