Как обновить существующие изображения с помощью docker-compose?

У меня есть несколько микросервисов, и я использую docker-compose для развертываний разработки. Когда в кодовой базе микросервисов происходят некоторые изменения, я запускаю ci для их повторного развертывания. У меня есть ниже сценарий, чтобы сделать это. Но каждый раз мне приходится создавать все изображения с нуля, а затем запускать их. После всей этой операции у меня anonymous изображения. Поэтому я использую последний скрипт для их удаления. Что бы вы предложили сделать этот процесс более практичным? Есть ли способ обновить существующее изображение, не удаляя его с новыми изменениями?

- docker-compose build
- docker-compose down
- docker-compose up -d --force-recreate
- docker rmi $(docker images -f "dangling=true" -q) -f

Дополнительная информация: я использую gitlab-ci

Ответ 1

Контейнеры-докеры рассчитаны на эфемерность. Чтобы обновить существующий контейнер, вы удалите старый и запустите новый. Таким образом, процесс, за которым вы следуете, является правильным.

Вы можете упростить команды следующим образом:

docker-compose up --force-recreate --build
docker image prune -f

Ответ 2

С docker-compose version 3 вы можете добавлять метки к своим изображениям и очищать их зависит от вашей логики:

build: ./dir
image: yourapp:tag

Это может помочь вам избежать анонимных изображений для очистки

Ответ 3

Вы можете обновить его, используя:

docker-compose pull