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
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions