Skip to content

infra

infra — это репозиторий запуска и окружения платформы. Он нужен не только для локального старта, но и как source of truth по runtime-конфигурации всех сервисов.

За что отвечает

  • docker-compose.yml и дополнительные compose-файлы;
  • шаблон .env.example;
  • health-зависимости сервисов;
  • proxy-контур через xray-proxy;
  • стандартный способ локального запуска;
  • deploy-конфигурация.

Что здесь живёт

ФайлНазначение
docker-compose.ymlбазовая инфраструктура
docker-compose.apps.ymlлокальный контур приложений
docker-compose.deploy.ymldeploy-контур
.env.exampleосновной шаблон env
Makefileудобные алиасы для запуска
xray-local/config.example.jsonпример proxy-конфига

Какие сервисы поднимаются

  • postgres
  • redis
  • rabbitmq
  • minio
  • minio-init
  • backend-api
  • processing-worker
  • scraper-service
  • frontend
  • xray-proxy при включённом профиле proxy

Почему этот репозиторий важен

Во многих командах infra воспринимается как вторичный слой, но для NPPWEB это не так.

Именно здесь находятся:

  • реальные env-дефолты;
  • лимиты источников;
  • proxy-поведение;
  • зависимости запуска;
  • сеть между сервисами;
  • healthcheck-политика.

Если что-то “вроде бы работает локально, но не в deploy” — очень часто причина именно здесь.

Базовый запуск

bash
cp .env.example .env
docker compose --env-file .env -f docker-compose.yml -f docker-compose.apps.yml up -d --build

Что важно помнить

  • backend-api сам запускает миграции и seed;
  • minio-init готовит bucket до scraper-service;
  • processing-worker зависит от rabbitmq и backend-api;
  • scraper-service зависит от rabbitmq, minio, minio-init;
  • при необходимости внешнего маршрута должен быть правильно включён proxy-контур.

Proxy-контур

Если внешние площадки доступны только через proxy, нужно:

  1. создать xray-local/config.json;
  2. задать HTTP_PROXY и HTTPS_PROXY;
  3. указать корректный NO_PROXY;
  4. в deploy-контуре включить COMPOSE_PROFILES=proxy.

Отдельно важно: если proxy env задан, а сам профиль proxy не поднят, scraper-service начнёт массово получать таймауты и сетевые ошибки.

Проверка состояния

bash
docker compose --env-file .env -f docker-compose.yml -f docker-compose.apps.yml ps
docker compose --env-file .env -f docker-compose.yml -f docker-compose.apps.yml logs backend-api processing-worker scraper-service frontend

Где это чаще всего ломается

Типичные классы проблем:

  • не поднялся xray-proxy, но proxy env уже включён;
  • сломаны env-дефолты по лимитам сбора;
  • неправильно указан S3_ENDPOINT или bucket;
  • сервисы ждут друг друга не в том порядке;
  • локальный .env сильно разошёлся с .env.example.

Когда менять именно этот репозиторий

Если нужно:

  • добавить новый runtime-service;
  • изменить compose-зависимости;
  • скорректировать env-дефолты;
  • поднять лимиты источников по умолчанию;
  • изменить proxy-маршрут;
  • настроить deploy-контур;

то почти наверняка начинать нужно с infra.

Техническая и аналитическая документация платформы NPPWEB.