Проект #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. Это сделает настройку и запуск приложения делом на несколько минут, без инструкций.

Наставники

Аватар наставника Антон Маркелов
Антон Маркелов
5.5 лет работаю в UnitedTraders, сначала просто инженером, последние 3 года - тимлидом инфраструктурной команды, двигаем DevOps со стороны эксплуатации и создаем все условия для адаптации DevOps-практик разработчиками. До этого успешно закончил стажировку по DevOps в Express42. Считаю, что выделенная роль DevOps-инженера в большинстве случаев воплощенное зло и не нужна большинству компаний.
Аватар наставника Михаил Иванов
Михаил Иванов
В IT более 15 лет. Начинал системным администратором, вырос до Devops-инженера. Строил большие и нагруженные системы с приватными облаками (Openstack), работал с паблик облаками — Azure и Digital Ocean. Участвует в Open Source и наставничает сразу в нескольких образовательных проектах
Сколько стоят проекты?

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

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

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

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

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

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

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

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

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

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

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