Проект модуля #1

Упаковка в Docker Compose

DevOps для программистов

Автоматизация развертывания и обновления локального окружения с помощью Docker Compose, Github Actions (CI), Makefile

2-4
недели

Цель

Docker — программа, позволяющая операционной системе запускать процессы в изолированном окружении на базе специально созданных образов. Образ это самостоятельная файловая система, контейнер — запущенный процесс в изолированном окружении. Благодаря возможностям ядра контейнер видит свой собственный список процессов, сеть, файловую систему и так далее. Зачем всё это? Docker — универсальный способ доставки приложения, ведь всё, что уже нужно находится внутри образа. Процесс сборки программы из исходников может выглядеть следующим образом:

  • Установка зависимостей под операционную систему
  • Получить исходный код (скачать архив или склонировать репозиторий)
  • Запустить компиляцию или сборку проекта

Данный процесс может быть нетривиальным и не всегда быстрым или вовсе не выполнимым. Docker позволяет упростить все эти действия до выполнения одной команды.

Docker Compose позволяет разрабатывать проект локально, используя Docker. Docker Compose может управлять набором контейнеров, каждый из которых, это сервис проекта: база данных, прокси-сервер и так далее. Он позволяет описать зависимости между сервисами. Например, зависимость приложения от базы данных. Конфигурация Docker Compose описывается в файле docker-compose.yml, лежащем в корне проекта.

Описание

В данном проекте студенты упаковывают приложение js-fastify-blog в Docker образ. Приложение уже использует методологию 12 факторов, это сводит к минимуму различия между средой разработки и продакшеном.

Docker Compose используется для настройки окружения для разработки, запуска тестов и CI. После успешного выполнения CI собирается образ приложения и публикуется на hub.docker.com. Это сделает настройку и запуск приложения делом на несколько минут, без инструкций.

Наставники

Аватар наставника Алексей Гонтаренко
Алексей Гонтаренко
PM в течение почти трех лет в Московской школе программистов, курировал разработку внутренней LMS и менеджерил инфраструктуру школы. Занимался выдачей доменных имен, поднятием серверов и конфигурацией. Участвовал в разработке внутреннего CI/CD, перенес в docker несколько внутренних сервисов. Решал вопросы защиты платформы от DDoS. В настоящее время — DevOps-инженер в IT-компании, занимающейся разработкой мобильных сервисов Москвы.
Аватар наставника Илья Подвольских
Илья Подвольских
DevOps-инженер, имеет опыт работы с Windows Server и Linux. Сопровождение, настройка CI/CD (GitLab, Jenkins, Ansible). Настройка окружения для разработчиков (Docker, Docker Compose). Мониторинг (zabbix, prometheus, grafana). Тестирование (Python, Selenium, Git). Наставничает в Хекслете, чтобы делиться знаниями и прокачивать soft skills
Аватар наставника Михаил Краев
Михаил Краев
Занимется программированием с 2016 года. Начинал карьеру с микропроцессорного программирования, после чего разрабатывал алгоритмы движения для промышленных манипуляторов. Пробовал себя в веб-разработке и разработке десктопных приложений. Опыт на разных стеках позволил прийти к сфере DevOps.
Сколько стоят проекты?

Проекты входят в стоимость обучения на любом плане: самостоятельном, групповом и индивидуальном. Дополнительно платить не нужно.

Зачем проходить проекты?

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

Проекты — портфолио программиста. Их код останется в вашем аккаунте на GitHub и будет преимуществом при поиске работы.

Чтобы узнать о том, что такое проекты и в чём их польза, прочитайте нашу статью «Анатомия проектов Хекслета».

Что делать, если возникли трудности во время выполнения проекта?

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

Кто проверяет проекты?

Автоматизированные тесты и линтер. В групповом и индивидуальном форматах наставник дополнительно проверит то, что тестами проверить невозможно (архитектуру проекта, правильность именования, удачность решений), и проведёт код-ревью, чтобы сделать проект ещё качественнее.

У меня другой вопрос

Нажмите на виджет в правом нижнем углу экрана и поищите ответ в нашей справке. Или сразу пишите на support@hexlet.io — вам ответит живой человек из команды Хекслета.