Найти в Дзене
Mad Devs

Continuous deployment с помощью docker cloud

Настроим непрерывный деплой статичного стайта на DO с помощью Docker Cloud.
Docker Cloud — единый инструмент, позволяющий автоматически билдить имейджи и публиковать их в registry, запускать тесты, создавать из существующих или вновь созданных имейджей сервисы и их стеки на инфрастуктуре, которой так-же управляет. Сама инфраструктура может быть развернута как на обычных нодах так и в

Настроим непрерывный деплой статичного стайта на DO с помощью Docker Cloud.

Docker Cloud — единый инструмент, позволяющий автоматически билдить имейджи и публиковать их в registry, запускать тесты, создавать из существующих или вновь созданных имейджей сервисы и их стеки на инфрастуктуре, которой так-же управляет. Сама инфраструктура может быть развернута как на обычных нодах так и в swarm-кластере используя ресурсы популярных провайдеров типа DO, Amazon, Azure или подключать свои имеющиеся.

Мы будет использовать клауд в стандартном режиме. В Cloud Settings привяжем GitHub и Digital Ocean аккаунты

-2

Это в общем-то вся предварительная настройка, в следующий раз за пределы Docker Cloud мы выйдем при настройки ДНС.

В разделе Build -> Repositories создадим новый докеровский репо в регистри, укажем репо гитхаба, который будет билдиться при git push, можно указать конкретную ветку(или regex) и кастомный докерфайл.

-3
-4

Наш имейдж будет билдиться при каждом пуше в гит-репо и публиковаться на https://hub.docker.com/.

Далее в разделе INFRASTRUCTURE -> Nodes создадим ноду, куда будет деплоиться наш имейдж:

-5

После нажатия кнопки Launch запустится поднятие виртуалки на DO с установленным докером и запущенным агентом docker-cloud, по завершении в списке появится наша нода со статусом Deployed.

Итак, у нас все готово для деплоя. Немного отступим назад — у нас очень простой сервис, который является набором статичных файлов: html, css, js, их сервит nginx, и по сути вся настройка контейнера — это паблишинг портов наружу.

В разделе APPLICATIONS -> Services -> Create выберем наш докеровский репо, созданный выше, и перейдем к настройке сервиса:

-6

Мы выбрали наш кластер в Deployment Constraints, так-же включили авторестарт и авторедеплой(запускается после пуша или билда нового имейджа).

-7

И настроили паблишинг портов. Это так-же даст команду клауду создать публичные endpoints по котором мы можем коннектиться к портам сервиса или отдельного контейнера.

Настроим на DO ДНС для нашей ноды. Вроде все работает однако нет SSL. Для этого удалим наш сервис и создадим заново, но уже в стеке с такими полезными проектами, как

-8
-9

Стек-файл, по сути тот-же compose с небольшими дополнениями для деплоя сервисов. Наш стек-файл имеет вид:

-10

Его мы добавляем в APPLICATIONS -> Stacks, после чего запускаем Deploy. Виртуальные переменные, заданные в нашем сервисе пнут nginx-proxy и letsencrypt-companion создать вхост и сгенерить ссл сертификаты.

Теперь наш проект доступен по адресу https://maddevs.io/.

Ранее статья была опубликована тут.