执行mvn clean install -P docker-build-image后应用变更未生效问题排查
排查步骤:Maven/Docker 还是 Kubernetes/Kind/Helm 导致变更未生效?
先确认:镜像是否包含代码变更(排除Maven/Docker问题)
这是最关键的第一步——如果本地镜像本身就没包含你的代码修改,后续部署肯定都是旧版本。
- 检查Maven构建产物:查看
target目录下的jar包修改时间是否为最新,解压jar包找到对应class文件,确认是否包含logger.info("testing changes made");这段代码。 - 直接运行本地镜像测试:
调用接口看返回状态码是否为docker run --rm -p 8080:8080 my-service:old-tag204 NO_CONTENT,同时查看容器日志是否有testing changes made的输出。- 如果这里没有出现预期变更,问题出在Maven/Docker环节:
- 检查
docker-build-imageProfile的配置,确认它是否正确触发了Docker镜像构建,且没有跳过jar包打包步骤。 - 查看项目的Dockerfile,确认COPY指令是否指向了
target目录下的最新jar包,有没有因Docker缓存导致复用了旧的镜像层(可以在构建时加--no-cache参数强制刷新缓存,比如mvn clean install -P docker-build-image -Ddocker.build.no-cache=true)。 - 注意:
docker tag只是给现有镜像添加新标签,不会修改镜像内容——如果old-tag对应的是旧镜像,new-tag也还是旧内容。
- 检查
- 如果这里没有出现预期变更,问题出在Maven/Docker环节:
再排查:Kubernetes/Kind/Helm 部署环节
如果本地镜像已经包含正确变更,那问题出在部署流程:
- 验证Kind集群中的镜像:
确认# 获取Kind节点名称 kind get nodes # 进入节点查看镜像 docker exec <你的Kind节点名称> docker images | grep my-servicenew-tag对应的镜像ID和本地docker images里的ID一致,否则说明kind load docker-image没有成功加载新镜像。 - 检查Helm部署的镜像配置:
查看输出中的helm get values authimage.tag是否为new-tag,如果不是,说明Helm values.yaml里还是配置的旧标签,或者安装时没指定正确标签。可以在安装时强制指定:helm install auth ./auth --set image.tag=new-tag --wait - 确认Pod实际运行的镜像:
查看输出的镜像标签是否为kubectl get pods -l app.kubernetes.io/name=auth -o jsonpath='{.items[*].spec.containers[*].image}'new-tag,同时检查镜像ID是否和本地一致。 - 清理残留资源:虽然
helm uninstall会删除大部分资源,但可以再执行kubectl delete all -l app.kubernetes.io/name=auth彻底清理,然后重新部署。
总结
优先排查镜像本身是否正确,这是最常见的问题;如果镜像没问题,再逐步验证Kind镜像加载、Helm配置和Pod运行状态。
内容的提问来源于stack exchange,提问作者Nigel Carty
相关产品推荐
相关产品推荐

