Docker CI构建中镜像不存在时docker rmi导致构建失败的解决求助
解决Docker CI流程中
docker rmi镜像不存在时构建中断的问题 直接给docker rmi命令追加|| true即可,和你处理容器停止、删除的逻辑一致:
docker rmi example/hello-world:latest || true
原理说明
在Shell环境中,command || true的逻辑是:如果前面的命令执行失败(返回非0退出码),就执行true命令。而true的退出码固定为0,CI工具会判断这一步执行成功,不会中断整个构建流程。
修改后的完整部署脚本
docker build -t example/hello-world:latest . docker stop zod || true && docker rm zod || true docker rmi example/hello-world:latest || true docker run --name zod -d -p 6000:6000 -dit example/hello-world:latest
可选的严谨写法
如果你不想看到"镜像不存在"的错误输出,可以先检查镜像是否存在,再执行删除操作:
# 检查镜像存在则删除 docker image inspect example/hello-world:latest > /dev/null 2>&1 && docker rmi example/hello-world:latest
docker image inspect会在镜像存在时返回0,不存在时返回非0;> /dev/null 2>&1是把检查的输出和错误信息都丢弃,避免污染CI日志。
内容的提问来源于stack exchange,提问作者Ven Nilson
相关产品推荐
相关产品推荐

