feat(#21): dev-стенд — compose-файлы, health-заглушка до #31

- docker-compose.dev.yml: отдельный project awg-dash-dev, порт 8080 в контейнере
  (наружу AWG_DASH_PORT, по умолчанию 8180 — 8080 занят на dev-хосте), bind mount
  /opt/awg-dash-dev/{config,data} -> /config,/data, healthcheck /api/v1/health,
  NET_ADMIN/NET_RAW/SYS_MODULE, /dev/net/tun, ip_forward, лимит логов;
- docker-compose.stub.yml + api_stub.py — DEV-ONLY заглушка health: AC-1 требует
  FastAPI-каркаса (#31), до него проверяем плумбинг стенда без обмана отчёта
  (в ответе ивно стоит "stub": true);
- docker-compose.test.yml: привилегированный netns-раннер (CAP_SYS_ADMIN нужен
  для `ip netns add`) + сервис app для API-тестов.

Refs #21
Refs #15
This commit is contained in:
2026-10-21 23:49:11 +03:00
parent 87cf5fe05f
commit da1c750297
4 changed files with 245 additions and 0 deletions
+23
View File
@@ -0,0 +1,23 @@
# Оверрайд для dev-стенда: health-заглушка вместо ещё не реализованного API.
#
# Зачем: AC-1 задачи #21 (`curl :8080/api/v1/health` -> 200) физически не может
# выполниться до появления FastAPI-каркаса (#31, Sprint 2). Чтобы проверить
# плумбинг стенда (порт, healthcheck, тома, restart) уже сейчас, этот оверрайд
# подменяет entrypoint на минимальный HTTP-сервер из deploy/api_stub.py.
#
# Это НЕ приложение: заглушка отдаёт 200 только на /api/v1/health и явно
# помечает ответ `"stub": true`. В prod/staging не использовать.
#
# Запуск: docker compose -f deploy/docker-compose.dev.yml -f deploy/docker-compose.stub.yml up -d
# (или make dev-up-stub / make dev-verify-stub)
#
# После мержа #31 оверрайд не нужен: `make dev-up` поднимает реальный API.
services:
awg-dash:
entrypoint: ["python3", "/opt/awg-dash-stub/api_stub.py"]
command: ["--host", "0.0.0.0", "--port", "8080", "--domain", "/config"]
volumes:
- ../deploy/api_stub.py:/opt/awg-dash-stub/api_stub.py:ro
environment:
AWG_API_STUB: "1"