Проверяет понимание архитектуры контейнеризации и того, когда базу данных стоит изолировать в отдельный Docker-контейнер, а когда это избыточно.
Вопрос о выносе базы данных в отдельный Docker-контейнер — это вопрос архитектуры и контекста. Docker сам по себе не диктует, где должна жить БД, но контейнеризация накладывает свои особенности: эфемерность контейнера, изоляцию файловой системы и сетевую модель. Поэтому решение зависит от того, для чего вы используете Docker — локальная разработка, CI, продакшен или тестовый стенд.
Для быстрых прототипов, демо или простых pet-проектов иногда держат БД внутри того же контейнера, что и приложение. Это уменьшает количество сущностей, но лишает гибкости: обновление приложения может затронуть БД, а масштабирование становится проблематичным. Также в продакшене часто предпочитают managed-решения (RDS, Cloud SQL), чтобы не администрировать БД в контейнерах.
version: "3.9"
services:
app:
build: .
ports:
- "3000:3000"
environment:
DB_HOST: db
DB_USER: postgres
DB_PASSWORD: secret
depends_on:
- db
db:
image: postgres:16
environment:
POSTGRES_PASSWORD: secret
volumes:
- pgdata:/var/lib/postgresql/data
volumes:
pgdata:
Здесь приложение и БД — отдельные сервисы. Приложение обращается к БД по имени db, а данные сохраняются в именованном volume pgdata. Это классический паттерн для локальной разработки и небольших продакшен-стендов.
Итог: выносить БД в отдельный контейнер стоит почти всегда, когда вы уже используете Docker для приложения — это даёт изоляцию, переиспользование и предсказуемое управление данными. Исключения — быстрые прототипы и случаи, когда проще взять managed-БД.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию