Упаковка в Docker Compose
Автоматизация развертывания и обновления локального окружения с помощью Docker Compose, Github Actions (CI), Makefile
Цель
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. Это сделает настройку и запуск приложения делом на несколько минут, без инструкций.
Наставники



Проекты входят в стоимость обучения на любом плане: самостоятельном, групповом и индивидуальном. Дополнительно платить не нужно.
Проекты дают опыт разработки в реальной среде. Проходите каждый проект сразу после изучения курсов, которые стоят в учебном плане перед ним, — это отличный способ глубже разобраться в материале.
Проекты — портфолио программиста. Их код останется в вашем аккаунте на GitHub и будет преимуществом при поиске работы.
Чтобы узнать о том, что такое проекты и в чём их польза, прочитайте нашу статью «Анатомия проектов Хекслета».
Задавайте вопросы в разделе «Обсуждение» на странице шага, на котором возникли трудности, или вашему наставнику. Изучите вопросы других студентов в «Обсуждениях»: там собрана большая база знаний, ей можно и нужно пользоваться.
Автоматизированные тесты и линтер. В групповом и индивидуальном форматах наставник дополнительно проверит то, что тестами проверить невозможно (архитектуру проекта, правильность именования, удачность решений), и проведёт код-ревью, чтобы сделать проект ещё качественнее.
Нажмите на виджет в правом нижнем углу экрана и поищите ответ в нашей справке. Или сразу пишите на support@hexlet.io — вам ответит живой человек из команды Хекслета.