我有多个微服务,我正在使用docker-compose
进行开发部署。当微服务代码库发生一些变化时,我会触发ci job来重新部署它们。我有以下脚本来做到这一点。但每次我必须从头开始构建所有图像然后运行它们。完成所有这些操作后,我有anonymous
张图像。所以我使用最后一个脚本删除它们。你建议什么使这个过程更实用?有没有办法更新现有图像而不用新的更改删除它?
- docker-compose build
- docker-compose down
- docker-compose up -d --force-recreate
- docker rmi $(docker images -f "dangling=true" -q) -f
其他信息:我正在使用gitlab-ci
答案 0 :(得分:29)
Docker容器设计为短暂的。要更新现有容器,请删除旧容器并启动新容器。 因此,您所遵循的流程是正确的。
您可以将命令简化为以下命令:
docker-compose up --force-recreate --build
docker image prune -f
答案 1 :(得分:25)
我宁愿在用新图像更新容器之前确保下载所有图像,以最大程度地减少处于中间状态的时间,甚至在出现图像下载失败的情况下,也可以缩短处于中间状态的时间。
1)我拉最新图片:
docker-compose pull
2)然后,我重新启动容器:
docker-compose up -d --remove-orphans
3)(可选)我删除过时的图像:
docker image prune
答案 2 :(得分:15)
localhost:<port>/Language
然后
docker-compose pull
您不需要“按下”“ docker-compose up -d”命令将仅重新创建更改的
答案 3 :(得分:6)
您可以使用以下方式更新它:
docker-compose pull
答案 4 :(得分:2)
使用docker-compose版本3,您可以为图像添加标签,并根据您的逻辑进行清理:
build: ./dir
image: yourapp:tag
它可以帮助您避免匿名图像清理