Хабрахабр

Как настроить Continuous Deployment для своего проекта: личный опыт

Автоматизация позволяет сэкономить кучу времени и сил. Перевели для вас статью Юлиуса Минмо о настройке непрерывной интеграции (Continuous Deployment) для своего проекта. Статья будет полезна, в первую очередь, начинающим программистам.

Один раз коммитим проект и далее все происходит в автоматическом режиме, наблюдение за этим процессом просто гипнотизирует. Непрерывная интеграция — отличная штука. В этой статье я покажу, как можно все настроить для домашнего проекта.

Напоминаем: для всех читателей «Хабра» — скидка 10 000 рублей при записи на любой курс Skillbox по промокоду «Хабр».

Skillbox рекомендует: Онлайн-курс «Профессия Frontend-разработчик».

Итак, для начала давайте посмотрим на схему, где объясняется разница между Continuous Delivery и Continuous Deployment.

Ну а поскольку в большинстве случаев хочется, чтобы изменения были немедленно развернуты, то выбор очевиден. В случае с домашним проектом выбираем Continuous Deployment, поскольку никто, кроме вас, с ним (проектом) не работает и никто от него не зависит. Если же вам позже захочется изменить процесс, вы всегда сможете это сделать.

Вы изучите следующее:

  • Как сделать Dockerfile.
  • Как выгрузить проект на GitHub.
  • Как автоматически построить образ docker на Docker Hub.
  • Как автоматически загрузить и запустить образ с Watchtower.

Что требуется:

  • Базовое понимание того, что представляют собой Docker и Dockerfile.
  • Установленный Git.
  • Учетная запись на <a href='https://hub.docker.com/">Docker Hub

Сервер (физический или виртуальный) с запущенным Docker.

Вот мои репозиторий GitHub и Docker Hub, с которыми я работаю.

Почему я использую Docker?

Он дает возможность использовать одно и то же окружение для разных процессов, что исключает появление гейзенбагов и проблемы «это работает только на моей машине». Контейнеры изолированы, что хорошо с точки зрения кибербезопасности. Есть и больше преимуществ, но, на мой взгляд, эти два являются главными.

Настройка Dockerfile

Этот файл всегда называется именно так и не имеет расширения. Сначала нам нужен Dockerfile для проекта. Он всегда находится в главной директории проекта.

Вы можете провести аналогию с живописью. Он начинается с оператора FROM, который сообщает Docker, с какого базового образа мы начинаем. Можем представить себе этот образ как готовый холст с нарисованным фоном и отсутствующим главным элементом композиции (вашей программой).

Далее копируем файлы проекта в контейнер при помощи команды COPY…

Она позволяет забрать файлы из начального расположения в текущее — конечно, внутри контейнера.

Главное, что нужно запомнить, — это запуск команд в контейнере с RUN. Далее необходимо установить зависимости, для этого я использую Python PIP.

7
COPY..
RUN pip install -r requirements.txt From python:3.

Теперь можно запускать программу в контейнере. Все просто, правда?

CMD [«python», "./my_script.py"]

Сейчас просто пропустим этот момент. Теперь все, вы закончили Dockerfile и можете вручную создать образ и контейнер.

Теперь давайте создадим репозиторий в GitHub, но помните, что строку “Initialize this repository with a README” не нужно трогать.

Теперь копируем URL.

Теперь необходимо инициализировать репозиторий, добавить файлы, сконфигурировать remote-режим, закоммитить файлы и отправить проект на GitHub. Открываем cmd/shell корневой директории проекта.

git init
git add *
git remote add origin https://github.com/<user>/<repository>.git
git commit -a -m "Make Dockerfile ready for CD"
git push -u origin master

Если все ОК, GitHub-репозиторий будет выглядеть вот так:

Мы на полпути к успеху!

Для этого нужно отправиться в настройки учетной записи. Теперь нужно подключить GitHub к Docker Hub.

Скролим вниз и подключаемся.

Теперь создаем репозиторий в Docker Hub.

Потом выбираем организацию (обычно это ваш ник) и название проекта. Называем свой репо и кликаем по иконке GitHub или Bitbucket. При желании настройки можно изменить.

Это программа, которая позволяет автоматизировать процесс. Ну а теперь последний шаг — здесь нам необходим Watchtower на целевой машине. Если появляется апдейт, то Watchtower убирает оригинальный контейнер и создает контейнер из нового образа с такими же настройками.

Хорошая новость в том, что можно установить Watchtower с Docker, для этого необходимо ввести в терминал такую команду:

docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock v2tec/watchtower

И теперь запускаем контейнер для своего проекта!

docker run -d --name <my-project> <username>/<my-project>

-d позволяет программе работать в фоне, так что она не закроется, если вы закроете терминал.

Затем с ним уже будет взаимодействовать Watchtower. Завершая сказанное, если вы отправите коммит к репозиторию GitHub, Docker Hub автоматически создаст образ Docker.

Вы можете прочитать об этом здесь, но суть в том, что вы добавляете в свой репозиторий еще один файл, в котором есть инструкции для внешнего сервера для выполнения модульных тестов или любые другие инструкции. Что касается тестов, то вы сможете использовать Travis CI.

Skillbox рекомендует:

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть