Полная разработка | DevOps
Автоматическое развертывание Docker с помощью Watchtower
Сторожевая башня | Докер | Докер Сочинять
За последние пару недель у меня было небольшое требование о том, как мы можем развернуть образ докера, который мы опубликовали в реестре контейнеров докеров. Было несколько способов, включая ручное извлечение и развертывание, и сторожевая башня дала мне лучшее решение на данный момент.
В этой статье я собираюсь объяснить, как я настроил автоматическое развертывание докеров с помощью сторожевой башни для углового приложения, опубликованного в реестре докеров GitLab.
На данный момент я объяснил, как мы можем настроить конвейер Gitlab CI для приложения angular, и вы можете скачать все исходники с Gitlab. Итак, с реализацией CI мы уже опубликовали исходники приложений в реестре докеров Gitlab. Начнем оттуда.
Запуск сторожевой башни
Watchtower — это просто еще один док-контейнер, способный прослушивать изменения, происходящие в развернутых док-образах. Итак, сначала нам нужно настроить докер и сторожевую башню поверх докера.
В этом уроке я использую серверную среду на основе Ubuntu 20.04, и вы можете следовать этой документации, чтобы продолжить настройку Ubuntu, прежде чем начинать настройку сторожевой башни.
Если вы уже выполнили установку докера, вы можете продолжить установку сторожевой башни, как показано ниже:
$ docker run -d --name watchtower --restart always -v /var/run/docker.sock:/var/run/docker.sock v2tec/watchtower -i 30
- Здесь сторожевая башня зависит от того, как она может получить доступ к Docker API, поскольку сторожевой башне необходим доступ к экземплярам докеров, чтобы фиксировать изменения из исходного реестра докеров и развертывать опубликованные изменения. Вот почему мы монтируем /var/run/docker.sock как том.
- В дополнение к сторожевой башне по по умолчанию проверка изменений с 5-минутными интервалами, но с этой настройкой я настраиваю проверку изменений каждые 30 секунд, используя -i 30 при запуске сторожевой башни .
Запуск контейнера докеров с угловым образом приложения
Здесь я создал общедоступный репозиторий докеров на докер-хабе и отправил последнюю версию исходного кода углового приложения. Вы можете клонировать исходный код и опубликовать его в Docker Hub под своей учетной записью. Или просто используйте любой образ докера, который у вас есть в настройках.
Сначала запустите приложение, используя докер с последним образом докера приложения,
$ docker pull javatodev/angular-ci-cd-app $ docker run -p 80:80 -d javatodev/angular-ci-cd-app:latest
Теперь у нас есть запущенный экземпляр докера с прослушивателем сторожевой башни, который прослушивает реестр Docker,
И вы должны иметь доступ к приложению с помощью общедоступного IP-адреса на сервер с портом 80.
Теперь мы можем опубликовать изменения в исходниках и опубликовать их в реестре Docker Hub.
Все сделано, и это то, что мы можем видеть в журналах сторожевой башни,
и образ докера имеет последнюю версию с новым образом,
Итак, здесь сторожевая башня фиксирует изменения в реестре докеров и отключает запущенный в данный момент экземпляр, извлекает и развертывает изменения с тем же именем контейнера докеров в тех же конфигурациях, что и привязки портов (80:80).
Все готово, теперь все приложения, развернутые на этом сервере, будут обновлены, когда мы обновим исходники и опубликуем новые образы Docker в соответствующих реестрах Docker.
Настройка аутентификации для частных реестров Docker
Существует дополнительная конфигурация, которую мы должны выполнить в тех случаях, когда мы используем частные реестры докеров, такие как Gitlab, Github, или ваши собственные настройки реестра докеров.
Здесь обычно, если нам нужно получить доступ к любому частному реестру докеров, мы вставляем команду входа в докер, как показано ниже:
$ docker login registry.gitlab.com Username: xxxxxxxxxxxxxx Password: WARNING! Your password will be stored unencrypted in /home/ubuntu/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store Login Succeeded
Здесь конфигурация учетных данных создана и сохраняется в среде сервера (/home/ubuntu/.docker/config.json). Вот пример файла,
Итак, мы можем перезапустить нашу сторожевую башню, добавив этот файл в качестве конфигурации, используя новый том,
$ docker run -d --name watchtower --restart always -v /var/run/docker.sock:/var/run/docker.sock -v /home/ubuntu/.docker/config.json:/config.json v2tec/watchtower -i 30
Теперь сторожевая башня может использовать сохраненный файл учетных данных и извлекать новые образы докеров из частного реестра.
Здесь, как я продемонстрировал, все компоненты обновляются, когда в соответствующем реестре докеров публикуется новая версия. Лучше установить стабильные версии для образов докеров, таких как базы данных (MongoDB, PostgreSQL и т. д.), серверы приложений (Tomcat, экземпляры PHP и т. д.), поскольку мы не обновляем контейнеры докеров, подобные тем, которые могут привести к проблемам с несовместимыми версиями в вашем приложении. разработки.
Спасибо за прочтение.