Я использую Docker для своего развертывания, и в его нынешнем виде я использую Docker-Compose (файл .yml) для одновременного запуска ~ 6 контейнеров. Каждое изображение в файле Compose находится локально (без подключения к Интернету в среде развертывания).
В настоящее время шаги, которые предпринимает мое развертывание, следующие:
- Запустить docker-compose up (запускает 6 контейнеров из локальных образов, таких как image1:latest, image2:latest и т. д., используя образы с тегом «latest»)
- При выходе/остановке у меня 6 остановленных контейнеров. Вручную перезапустите каждый из шести остановленных контейнеров (docker start xxx)
- Вручную фиксируйте каждый перезапущенный контейнер (docker commit xxx)
- Вручную повторно помечайте каждое из изображений предыдущего поколения постепенно (изображение1:последнее -> изображение1:версия1, изображение1:версия2 и т. д.) и вручную удаляйте изображение, содержащее «последний» тег
- Вручную пометьте каждый из зафиксированных контейнеров (которые теперь являются изображениями) тегом «последней» (image1:latest)
В этом процессе скорее участвует пользователь, и наше развертывание требует участия пользователя только для запуска команды «docker-compose up», а затем выключения/остановки Docker-Compose.
Требуемая конечная цель состоит в том, чтобы сценарий или Docker самостоятельно выполнял эти шаги и в итоге получал образы разных поколений (image1:version1, image1:version2, image1:latest и т. д.).
Итак, мой вопрос заключается в том, как мне создать сценарий (или сделать это с помощью Docker), где сценарий (или Docker) может автономно:
- Перезапустите остановленные контейнеры после остановки/выхода из Docker-Compose.
- Зафиксируйте перезапущенные контейнеры
- Повторно пометьте предыдущие изображения последними тегами с увеличенным номером версии (image1:version1, image1:version2 и т. д.), затем удалите предыдущее изображение1:последнее изображение.
- Пометьте недавно зафиксированные перезапущенные контейнеры (которые теперь являются образами) тегом «последний»
Это довольно длинный и интенсивный вопрос, на который нужно ответить, но я был бы признателен за любую помощь с любым из шагов, необходимых для выполнения моей задачи. Спасибо.