# INFRA.md — инфраструктура и эксплуатация {{PROJECT_NAME}}

> RUNBOOK. Топология, контейнеры, порты, переменные окружения, границы.
> **Секреты тут НЕ хранятся** — только дескрипторы. Реальные значения — в `.env` на хосте.

## Топология

```
                 общий хост (рядом живут контейнеры ДРУГИХ проектов)
 ┌──────────────────────────────────────────────────────────────────────┐
 │  {{REPO}}          (PROD)     :{{PROD_PORT}}     env_file .env        │
 │  {{REPO}}-staging  (STAGING)  :{{STAGING_PORT}}  изолированные данные │
 └──────────────────────────────────────────────────────────────────────┘
```

(уточни диаграмму под фактическую топологию: сеть, тома, БД, внешние зависимости)

## Контейнеры

| Контейнер | Роль | Порт | env_file | Данные (хост) | Старт |
|-----------|------|------|----------|---------------|-------|
| `{{REPO}}` | прод | {{PROD_PORT}} | `.env` | (указать тома/БД) | (команда старта) |
| `{{REPO}}-staging` | staging | {{STAGING_PORT}} | (staging env) | (изолированные) | (команда старта) |

## Карта env-переменных

Канон карты — `.env.example` в корне репо (дескрипторы без значений). Правило секретов:
**секреты ТОЛЬКО в `.env` на хосте**, в гит не коммитятся; `docker-compose.yml`/`Dockerfile`
(если есть) трекаются в гите.

| Переменная | Назначение |
|-----------|-----------|
| `APP_PROD_PORT` | порт прод-контура ({{PROD_PORT}}) |
| `APP_STAGING_PORT` | порт staging-контура ({{STAGING_PORT}}) |
| (дополнять при вводе переменных) | |

## Границы доступа

- Кто имеет доступ к хосту/контейнерам/данным проекта — перечислить явно.
- Токены/ключи проекта: где живут (только `.env` на хосте), кем используются, как ротируются.
- Агенты конвейера работают в worktree репо и НЕ имеют доступа к чужим проектам.

## Smoke-endpoints

| Endpoint | Контур | Назначение |
|----------|--------|-----------|
| (например `/health`) | staging {{STAGING_PORT}} / prod {{PROD_PORT}} | живость сервиса (read-only) |

## ⚠️ Эксплуатационные предупреждения — риски общего хоста

- Хост ОБЩИЙ: рядом работают контейнеры других проектов и ресурсы (CPU/RAM/диск) делятся.
  Дисковое место на хосте впритык — следи за объёмом образов/томов/логов.
- НИКОГДА не останавливать/не рестартить чужие контейнеры и не менять чужие env/тома.
- Рестарт прод-контура {{REPO}} — только по процедуре деплоя (см. ниже), не ad-hoc.
- Перед прод-деплоем обязателен staging-контур ({{STAGING_PORT}}).

## Деплой

(описать фактическую процедуру деплоя проекта: staging-проверка → прод-выкатка → health-check →
откат. Заполняется при настройке CI/CD проекта; deployer-агент исполняет ровно эту процедуру.)
