Как обновить существующие изображения с помощью 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