Skip to content

[Task] Создание Core-пакета Docker для развертывания всей инфраструктуры в одну команду #8

@soorq

Description

@soorq

Контекст

С усложнением архитектуры (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 (опционально).
  • Логика работы:
    1. Организовать структуру docker-compose.yml с использованием профилей (profiles), чтобы можно было запускать только базовый стек или полный стек с аналитикой.
    2. Создать кастомные Dockerfile для каждого внутреннего сервиса (Backend, Analytics) с использованием Multi-stage builds для оптимизации веса образов.
    3. Настроить единую внутреннюю сеть (bridge network) для взаимодействия сервисов.
    4. Описать конфигурации healthcheck для БД и Redis, чтобы зависимые сервисы (Backend) дожидались готовности хранилищ перед запуском.

Цель и критерии приемки (Definition of Done)

  • База: Созданы файлы docker-compose.yml и .env.example со всеми необходимыми переменными.
  • Функционал: Команда docker compose up -d успешно поднимает: API, БД, Кэш, Clickhouse и систему логирования.
  • Лимиты/SLA: Время полной сборки и холодного старта всех контейнеров не должно превышать 3 минут на стандартной dev-машине.
  • Интеграция: Создан Makefile с командами-алиасами (например, make setup, make up, make logs, make clean).

Важные указания

  • Производительность: Использовать .dockerignore, чтобы исключить node_modules, логи и временные файлы из контекста сборки. Настроить монтирование томов (volumes) для персистентности данных БД.
  • Ошибки: В случае падения одного из контейнеров, политика restart: unless-stopped должна обеспечивать автоматическое восстановление.
  • Безопасность: Секреты (пароли БД, ключи API) не должны быть жестко прописаны в compose-файле. Использовать только ссылки на переменные окружения. Настроить non-root пользователей внутри Docker-контейнеров для бэкенд-сервисов.

Metadata

Metadata

Assignees

Labels

devopsЗадачи, связанные с автоматизацией жизненного цикла ПОdocumentationImprovements or additions to documentationenhancementNew feature or requestinfrastructureЗадачи по управлению железом или виртуальными ресурсами

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions