# deploy — сборка и развёртывание | Артефакт | Назначение | Задача | |---|---|---| | `Dockerfile` | multi-stage: amneziawg-go + awg-tools → runtime alpine | #18 | | `entrypoint.sh` | супервизор: `awg-agent` (root) + `awg-api` | #18 | | `docker-compose.dev.yml` | dev-стенд: порт 8080, тома `/config` `/data`, healthcheck | #21 | | `docker-compose.test.yml` | стенд для тестов | #21 | | `docker-compose.stub.yml` | DEV-ONLY оверрайд: health-заглушка до мержа #31 | #21 | | `api_stub.py` | минимальный `/api/v1/health` для проверки плумбинга стенда | #21 | | `verify-dev-stand.sh` | проверка AC #21 на Docker-хосте (`make dev-verify`) | #21 | | `dev-stand.md` | runbook dev-стенда: запуск, AC, откат, pitfalls | #21 | | `grafana/` | дашборд JSON (опциональный профиль monitoring) | #46 | | `awg0.conf.example` | пример клиентского конфига | #22 | Запуск по ТЗ (после релиза): `--network=host`, `--device=/dev/net/tun`, `--cap-add=NET_ADMIN --cap-add=SYS_MODULE`, `--restart always`. ## Dev-стенд (задача #21) ```bash make dev-up # поднять стенд (compose project awg-dash-dev) make dev-verify # AC: health 200 + /config /data переживают restart make dev-up-stub # + health-заглушка, пока нет API (#31) make dev-logs make dev-down ``` * Состояние: `/opt/awg-dash-dev/{config,data}` на Docker-хосте (`AWG_DASH_HOST_DIR`). * Хост-порт: `AWG_DASH_PORT` (по умолчанию 8180 — 8080 занят на dev-хосте; в контейнере всегда 8080). * Подробности, таблица AC, откат и pitfalls — [dev-stand.md](dev-stand.md). ### Тестовый стенд без реального провайдера ```bash make test-netns # netns-топология client/gw/uplink + мок WireGuard-endpoint make test-netns-ci # то же в привилегированном контейнере (путь для CI, #17) make test-manifests # статическая проверка compose-файлов (без Docker) make lint-shell # shellcheck для скриптов стенда ``` Описание топологии, тестов и pitfalls — [../tests/netns/README.md](../tests/netns/README.md).