Документ описывает все сервисы и компоненты системы, необходимые для локального запуска через Docker.
2025-12-XX
- Путь:
projects/backend/services/experiment-service/ - Технологии: Python 3.14, aiohttp 3.10, asyncpg 0.29, PostgreSQL
- Порт: 8002
- Dockerfile: ✅ Есть (
projects/backend/services/experiment-service/Dockerfile) - docker-compose.yml: ✅ Есть (локальный, только для experiment-service)
- env.example: ✅ Есть
- Зависимости:
- PostgreSQL 16 (для хранения данных)
- Auth Service (опционально, можно использовать заглушки через заголовки)
- RabbitMQ (упоминается, но не используется активно)
- Redis (для telemetry broker, упоминается)
- Статус: ✅ Полностью реализован и готов к запуску
- Путь:
projects/frontend/apps/auth-proxy/ - Технологии: Node.js 24 (LTS), TypeScript, Fastify
- Порт: 8080
- Dockerfile: ✅ Есть (
projects/frontend/apps/auth-proxy/Dockerfile) - docker-compose.yml: ❌ Нет
- env.example: ✅ Есть
- Зависимости:
- Auth Service (upstream на порт 8001)
- Experiment Service (upstream на порт 8002)
- Статус: ✅ Реализован, но требует Auth Service для полной функциональности
- Путь:
projects/frontend/apps/experiment-portal/ - Технологии: React 18, TypeScript, Vite, Nginx (production)
- Порт: 3000 (dev режим с Vite), 80 (production с Nginx)
- Dockerfile: ✅ Есть (
projects/frontend/apps/experiment-portal/Dockerfile) - docker-compose.yml: ✅ Есть (в корне проекта)
- env.example: ❌ Нет (использует переменные Vite)
- Зависимости:
- Auth Proxy или Experiment Service (для API запросов)
- Статус: ✅ Реализован, готов к запуску
- Примечание: Для доступа извне контейнера в
vite.config.tsнастроенhost: '0.0.0.0'
- Путь:
projects/backend/services/auth-service/ - Технологии: Python 3.14, aiohttp 3.10, asyncpg 0.31, PostgreSQL, PyJWT, bcrypt
- Порт: 8001
- Dockerfile: ✅ Есть (
projects/backend/services/auth-service/Dockerfile) - env.example: ✅ Есть
- Зависимости:
- PostgreSQL 16 (база данных
auth_db)
- PostgreSQL 16 (база данных
- Статус: ✅ Полностью реализован и готов к запуску
- API Endpoints:
POST /auth/register- регистрация пользователяPOST /auth/login- вход пользователяPOST /auth/refresh- обновление токенаPOST /auth/logout- выходGET /auth/me- информация о текущем пользователеGET /health- health check
- Упоминается в:
docs/experiment-tracking-ts.md,docs/experiment-tracking-status-and-roadmap.md - Статус: ❌ Не реализован
- Примечание: Не критично для базового запуска
- Упоминается в:
docs/experiment-tracking-ts.md,docs/experiment-tracking-status-and-roadmap.md - Статус: ❌ Не реализован
- Примечание: Не критично для базового запуска
- Упоминается в:
docs/experiment-tracking-ts.md - Статус: ❌ Не реализован
- Примечание: Не критично для базового запуска
- Упоминается в:
docs/experiment-tracking-ts.md,docs/experiment-tracking-status-and-roadmap.md - Статус: ❌ Не реализован
- Примечание: Не критично для базового запуска, можно использовать прямые запросы к сервисам
- Упоминается в:
docs/experiment-tracking-ts.md,docs/experiment-tracking-status-and-roadmap.md - Статус: ❌ Не реализован
- Примечание: Не критично для базового запуска
- Версия: 16 (используется в experiment-service)
- Порт: 5432
- База данных:
experiment_db - Статус: ✅ Используется, есть в docker-compose.yml experiment-service
- Миграции: ✅ Есть (
projects/backend/services/experiment-service/migrations/)
- Упоминается в:
env.example,settings.py - URL:
amqp://guest:guest@localhost:5672/ - Статус:
⚠️ Упоминается, но не используется активно в текущей реализации - Примечание: Возможно потребуется для будущих интеграций
- Упоминается в:
env.example,settings.py(какtelemetry_broker_url) - URL:
redis://localhost:6379/0 - Статус:
⚠️ Упоминается, но не используется активно в текущей реализации - Примечание: Возможно потребуется для telemetry broker
- Упоминается в:
env.example,settings.py - Endpoint:
http://localhost:4318 - Статус:
⚠️ Опционально, для мониторинга
- ✅ PostgreSQL - для хранения данных experiment-service
- ✅ Experiment Service - основной backend сервис
- ✅ Experiment Portal - фронтенд приложение (опционально, можно тестировать через API)
- ✅ Auth Service - сервис аутентификации (рекомендуется для полной функциональности)
- ✅ Auth Proxy - BFF для фронтенда (требует Auth Service)
- RabbitMQ
- Redis
- Metrics Service
- Artifact Service
- Comparison Service
- API Gateway
- Telemetry Ingest Service
| Сервис | Путь к Dockerfile | Статус |
|---|---|---|
| Experiment Service | projects/backend/services/experiment-service/Dockerfile |
✅ Готов |
| Auth Service | projects/backend/services/auth-service/Dockerfile |
✅ Готов |
| Auth Proxy | projects/frontend/apps/auth-proxy/Dockerfile |
✅ Готов |
| Experiment Portal | projects/frontend/apps/experiment-portal/Dockerfile |
✅ Готов |
| Файл | Путь | Описание |
|---|---|---|
| Основной | docker-compose.yml |
Единый compose для всех сервисов |
| Override (dev) | docker-compose.override.yml.example |
Пример для dev режима с hot-reload |
| Локальный | projects/backend/services/experiment-service/docker-compose.yml |
Устаревший, использовать основной |
- Файл:
projects/backend/services/experiment-service/env.example - Основные переменные:
DATABASE_URL- подключение к PostgreSQLAUTH_SERVICE_URL- URL Auth Service (опционально)RABBITMQ_URL- URL RabbitMQ (не используется активно)TELEMETRY_BROKER_URL- URL Redis (не используется активно)
- Файл:
projects/backend/services/auth-service/env.example - Основные переменные:
DATABASE_URL- подключение к PostgreSQL (базаauth_db)JWT_SECRET- секретный ключ для подписи JWT токеновACCESS_TOKEN_TTL_SEC- время жизни access токена (по умолчанию 900 сек)REFRESH_TOKEN_TTL_SEC- время жизни refresh токена (по умолчанию 1209600 сек)BCRYPT_ROUNDS- количество раундов для хеширования паролей
- Файл:
projects/frontend/apps/auth-proxy/env.example - Основные переменные:
TARGET_EXPERIMENT_URL- URL Experiment ServiceAUTH_URL- URL Auth ServiceCORS_ORIGINS- разрешенные origins для CORS
- Использует переменные Vite (префикс
VITE_) - Основная переменная:
VITE_API_URL(по умолчаниюhttp://localhost:8002)
-
Создать единый docker-compose.yml в корне проекта, который объединит:
- PostgreSQL
- Experiment Service
- Auth Proxy (с заглушкой Auth Service или без него)
- Experiment Portal
-
Добавить поддержку hot-reload для разработки:
- Volume для исходного кода
- Переменные окружения для dev режима
-
Настроить сеть Docker для взаимодействия сервисов
-
Добавить healthcheck'и для всех сервисов
-
Создать .env файл в корне проекта с общими настройками
-
Добавить скрипты запуска (Makefile или shell скрипты)
- ✅ Auth Service полностью реализован и готов к использованию
- Auth Proxy требует Auth Service для полной функциональности
- Experiment Service может работать без Auth Service, используя заголовки для отладки
- Большинство сервисов из roadmap еще не реализованы и не требуются для базового запуска
- RabbitMQ и Redis упоминаются, но не используются активно в текущей реализации
- PostgreSQL используется для двух баз данных:
experiment_db(experiment-service) иauth_db(auth-service)