5 вещей, которые должен знать фронтенд-разработчик про Docker
В статье разберёмся, зачем фронтенд-разработчику необходимо знать Docker. Пройдёмся по основам: от создания образа и управления контейнерами до настройки полноценного стека с бэкендом при помощи Docker Compose.
970 открытий4К показов
Каждый день граница между фронтендом и бэкендом размывается, поэтому компании всё чаще ищут универсальных разработчиков, способных не только написать код, но и обеспечить стабильную работу приложения на каждом этапе релизного цикла, вплоть до запуска в продакшене.
Много кто пропустил момент, когда Docker стал стандартом в индустрии, а контейнеризация перестала быть приятным опциональным бонусом при найме опытного разработчика.
Сегодня причислять себя к Senior-грейду без знания основ контейнеризации — неоправданно.
Не будем лукавить — также компании любят экономить на сотрудниках, размывая отвественность из смежных областей на фронтенд-разработчика, который находится где-то посредине релизного цикла.
Давайте разбираться, что должен знать фронтенд-разработчик про Docker.
Что такое Docker?
Docker — это программа для создания, развёртывания и управления приложениями в контейнерах. Контейнер создаётся на основе образа, который описан в Dockerfile.
Dockerfile — по сути, инструкция для создания контейнера. В нём описывается окружение, зависимости и команды для запуска приложений внутри, например, прокси-сервера или микросервиса авторизации.
Какие проблемы решает Docker во фронтенде?
В небольшом проекте работа с web-приложением сводится к использованию четырёх команд: start, build, test, deploy.
А вот запуск веб-приложения в большом и устоявшемся коммерческом проекте выглядит так:
- Запусти Nginx, чтобы отдать клиент.
- Подними (а перед этим установи) бекенд на Go и кэш на Redis, чтобы заработало API.
- Запусти БД, чтобы были данные.
- Запусти вспомогательные сервисы для API, например, аутентификацию или backoffice.
Без контейнеризации запуск сложного приложения превращается в филиал ада: разработчики тратят время на запуск инфраструктуры, у пользователей MacOS не работает то, что работает у пользователей Ubuntu, а порты Postgres конфликтуют с портами локально поднятого почтового сервера.
Так ноутбук начинает выполнять функцию обогревателя для помещения площадью 40 квадратных метров 🙂
Для решения каких задач фронтенд-разработчики выбирают Docker чаще всего?
На стороне фронтенда Docker чаще всего используют для:
- Запуска и работы web-приложения.
- Запуска инфраструктуры для web-приложения.
- Запуска тестов (создание скриншотов, e2e-тесты).
- Сборка приложения на CI.
Что же должен знать фронтенд-разработчик про Docker?
Основные команды для работы с Docker
Без знания основных команд вы не сможете ни запустить контейнер, ни отладить, ни понять, что же с ним происходит.
Базовое управление контейнерами также доступно через интуитивно понятный Docker UI.
Важно: все основные команды имеют полезные аргументы. Полный список аргументов вы можете найти в документации.
Как создать базовый Docker-образ для веб-приложения?
Прежде чем запустить контейнер, нужно описать его содержимое, а также выбрать порядок выполнения команд.
Образ стандартного web-приложения выглядит примерно так:
При создании Dockerfile рекомендуем следовать минимальному набору лучших практик:
- Использовать базовые образы, чтобы не нагружать образ лишними модулями.
- Добавлять .dockerignore, чтобы исключать лишние файлы из сборки.
- Не запускать контейнер от root, чтобы снизить риски для безопасности.
- Проверять сторонние образы с помощью
docker scan, опять же, чтобы снизить риски для безопасности.
Как отправить образ в Container Registry?
Container Registry — это хранилище для Docker-образов.
Container Registry можно сравнить с Github, только вместо репозиториев — готовые для развёртывания образы.
Для работы с Container Registry есть несколько основных команд:
По тегу latest вы всегда можете получить последнюю версию вашего контейнера.
Популярные Container Registry:
- Docker Hub (публичный, простой и бесплатный для открытых проектов);
- GitHub Container Registry (платный, интегрирован с GitHub);
- Google Container Registry (платный);
- Yandex Container Registry (платный).
Важно: старайтесь подбирать Container Registry под экосистему, в которой будет работать ваше приложение. Это сэкономит много сил и времени.
Как запустить Docker-контейнер локально и на сервере?
Для локального запуска контейнера потребуется пройти простой пайплайн:
Если вы хотите запустить контейнер на удалённом сервере с установленным Docker, то вам потребуется пройти пайплайн посложнее:
Важно: в данном примере мы используем в качестве Container Registry — Docker Hub.
Как подключить фронтенд к бэкенду внутри Docker?
Чтобы не настраивать общение клиента и сервера через порты, хорошая практика — объединять сервисы в рамках единой Docker-сети.
Обычно этой задачей занимается файл-оркестратор docker-compose.yml:
Чтобы поднять весь стэк, нам понадобятся команды:
Ключевые моменты:
- Сервисы в одной сети могут общаться по имени (в примере фронтенд обращается к бэкенду по http://backend:5000);
- depends_on гарантирует порядок запуска, но не ждёт готовности сервиса;
- Для продакшена можно разделить конфигурации на docker-compose.yml и docker-compose.prod.yml.
Бонус: Как управлять контейнерами через UI?
В случае отсутствия опыта контейнеризации у команды разработки, управление контейнерами можно осуществлять через UI (вместо терминала) при помощи Portainer.
Portainer — это легковесная панель управления Docker-контейнерами. Через удобный графический интерфейс он позволяет выполнять операции, которые обычно отправляются через терминал (docker run, docker ps, docker compose up).
Portainer делает управление докер-контейнерами доступным для широкого круга пользователей: от разработчиков и тестировщиков до системных администраторов.
Portainer не заменяет необходимость знания Docker, но значительно ускоряет и упрощает такие рутинные операции, как развёртывание и мониторинг.
Когда Docker необходим, а когда можно обойтись?
Используйте Docker когда:
- работаете в команде с разными ОС;
- проект имеет сложные внутренние и внешние зависимости;
- нужно обеспечить идентичность разных сред: разработки, тестирования, продакшена;
- работаете с full-stack приложениями, где фронтенд тесно связан с бэкендом.
Без Docker можно обойтись когда:
- работаете над небольшим проектом;
- вся команда использует одинаковое железо и ОС;
- проект не имеет сложных зависимостей;
- нет необходимости в изоляции окружений.
Заключение
В последние годы Docker прочно вошёл в арсенал фронтенд-разработчиков, перестав быть инструментом исключительно для бэкенда и DevOps.
Основная ценность Docker для фронтенд разработчика заключается в решении двух ключевых задач: быстрый запуск сложной рабочей среды приложения и обеспечение стабильности на протяжении релизного цикла.
Поэтому даже базовое знание Docker поможет выделиться на фоне других разработчиков, ведь вы сможете не просто создать приложение, но и провести его через полный релизный цикл.
В своём телеграмм-канале я делюсь практическим опытом разработки, честно рассказываю о трудностях в работе, а также показываю кейсы проектов, которыми занимаюсь в свободное время!
Буду рад каждому, кто подписался ✨
Возможно, вам будет интересно:
Делитесь своими находками и полезными командами для работы с Docker в комментариях!
970 открытий4К показов






