如何使用docker-compose更新现有图像?

时间:2018-03-16 08:49:04

标签: docker docker-compose gitlab-ci

我有多个微服务,我正在使用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

5 个答案:

答案 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

它可以帮助您避免匿名图像清理