Контекст
С усложнением архитектуры (Backend, PostgreSQL, Redis, Clickhouse, Analytics-service, Grafana, Loki) процесс локального запуска и развертывания на стейджинг становится трудоемким. Необходимо подготовить унифицированный "Core-пакет" конфигураций Docker, который позволит поднять весь стек технологий одной командой docker-compose up. Это обеспечит идентичность сред разработки и продакшена, а также ускорит онбординг новых разработчиков.
Технические требования
- Локация логики: Корневая директория проекта
/docker, docker-compose.yml, Makefile.
- Инструменты: Docker, Docker Compose V2, Docker Swarm/K8s (опционально).
- Логика работы:
- Организовать структуру
docker-compose.yml с использованием профилей (profiles), чтобы можно было запускать только базовый стек или полный стек с аналитикой.
- Создать кастомные
Dockerfile для каждого внутреннего сервиса (Backend, Analytics) с использованием Multi-stage builds для оптимизации веса образов.
- Настроить единую внутреннюю сеть (
bridge network) для взаимодействия сервисов.
- Описать конфигурации
healthcheck для БД и Redis, чтобы зависимые сервисы (Backend) дожидались готовности хранилищ перед запуском.
Цель и критерии приемки (Definition of Done)
Важные указания
- Производительность: Использовать
.dockerignore, чтобы исключить node_modules, логи и временные файлы из контекста сборки. Настроить монтирование томов (volumes) для персистентности данных БД.
- Ошибки: В случае падения одного из контейнеров, политика
restart: unless-stopped должна обеспечивать автоматическое восстановление.
- Безопасность: Секреты (пароли БД, ключи API) не должны быть жестко прописаны в compose-файле. Использовать только ссылки на переменные окружения. Настроить
non-root пользователей внутри Docker-контейнеров для бэкенд-сервисов.
Контекст
С усложнением архитектуры (Backend, PostgreSQL, Redis, Clickhouse, Analytics-service, Grafana, Loki) процесс локального запуска и развертывания на стейджинг становится трудоемким. Необходимо подготовить унифицированный "Core-пакет" конфигураций Docker, который позволит поднять весь стек технологий одной командой
docker-compose up. Это обеспечит идентичность сред разработки и продакшена, а также ускорит онбординг новых разработчиков.Технические требования
/docker,docker-compose.yml,Makefile.docker-compose.ymlс использованием профилей (profiles), чтобы можно было запускать только базовый стек или полный стек с аналитикой.Dockerfileдля каждого внутреннего сервиса (Backend, Analytics) с использованием Multi-stage builds для оптимизации веса образов.bridge network) для взаимодействия сервисов.healthcheckдля БД и Redis, чтобы зависимые сервисы (Backend) дожидались готовности хранилищ перед запуском.Цель и критерии приемки (Definition of Done)
docker-compose.ymlи.env.exampleсо всеми необходимыми переменными.docker compose up -dуспешно поднимает: API, БД, Кэш, Clickhouse и систему логирования.Makefileс командами-алиасами (например,make setup,make up,make logs,make clean).Важные указания
.dockerignore, чтобы исключитьnode_modules, логи и временные файлы из контекста сборки. Настроить монтирование томов (volumes) для персистентности данных БД.restart: unless-stoppedдолжна обеспечивать автоматическое восстановление.non-rootпользователей внутри Docker-контейнеров для бэкенд-сервисов.