Add docker-compose for running all components together
control-api was the only component deployable via a bare Dockerfile alone (no entrypoint/template, no default mountable config), and there was no compose file wiring the four services' network, healthcheck ordering, or DB volume together. Adds a base docker-compose.yml plus dev (override, auto-loaded) and prod overlays, split by Compose profiles matching the real deployment topology (control-plane/dashboard/prober/validator), a ready-to-copy mock config for control-api so `docker compose up` works out of the box, and the repo's first .gitignore for the local env/config copies developers create from the committed examples. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NeVbMVEiE7XQAkBd7HQgj6
This commit is contained in:
1 parent
200760f390
commit
cf5c7fa0e8
9 files changed
+354
No files matched your search
@@ -26,6 +26,7 @@ HTTP API control-api.
|
||||
| [docs/DASHBOARD.md](docs/DASHBOARD.md) | Браузерная админ-панель (`admin-dashboard`) — то же самое API, но графически |
|
||||
| [docs/DIAGRAMS.md](docs/DIAGRAMS.md) | Диаграммы потоков данных: control plane, поток проверки до целевого сервера, поток телеметрии |
|
||||
| [docs/LOCAL_E2E.md](docs/LOCAL_E2E.md) | Полностью офлайн-прогон всей системы одним скриптом — без реального облака и интернета |
|
||||
| [deploy/docker/RUN.txt](deploy/docker/RUN.txt) | Сборка и запуск каждого компонента в Docker: команды `docker build`/`docker run`, переменные окружения |
|
||||
|
||||
## Быстрый старт (60 секунд, без OpenStack)
|
||||
|
||||
@@ -55,3 +56,55 @@ scripts/run-local-e2e.sh
|
||||
```bash
|
||||
curl -s http://<control-api>:8080/api/v1/admin/status | python3 -m json.tool
|
||||
```
|
||||
|
||||
## Развёртывание в Docker
|
||||
|
||||
Все четыре компонента можно собрать и запустить как отдельные Docker-образы
|
||||
вместо systemd-юнитов — Dockerfile'ы лежат в `deploy/docker/<компонент>/`,
|
||||
полные команды сборки/запуска и список переменных окружения — в
|
||||
[deploy/docker/RUN.txt](deploy/docker/RUN.txt).
|
||||
|
||||
- `prober`, `validator-agent`, `admin-dashboard` — конфиг генерируется
|
||||
внутри контейнера из переменных окружения (`docker-entrypoint.sh` +
|
||||
`envsubst`), готовых образов для монтирования не требуется.
|
||||
- `control-api` — конфиг содержит списки (validators/sites/targets/
|
||||
ip_addresses) и имена env-переменных для OpenStack-креденшлов, поэтому
|
||||
монтируется файлом (`-v .../control-api.yaml:/etc/cloud-ip-validator/control-api.yaml:ro`),
|
||||
а база данных — отдельным volume для персистентности.
|
||||
|
||||
Пример для `prober`:
|
||||
|
||||
```bash
|
||||
docker build --platform linux/amd64 -t cloud-ip-validator-prober -f deploy/docker/prober/Dockerfile .
|
||||
docker run -d --platform linux/amd64 --cap-add NET_RAW --name prober \
|
||||
-e PROBER_SITE_ID=<site_id> \
|
||||
-e PROBER_CONTROL_API_URL=<http://control-api-host:port> \
|
||||
cloud-ip-validator-prober
|
||||
```
|
||||
|
||||
`site_id` должен быть заранее зарегистрирован на control-api
|
||||
(`PUT /api/v1/admin/config/sites/{index}`) — иначе контейнер завершится с
|
||||
ошибкой регистрации. Аналогичные команды для остальных трёх компонентов —
|
||||
в [deploy/docker/RUN.txt](deploy/docker/RUN.txt).
|
||||
|
||||
### Запуск всех компонентов через docker-compose
|
||||
|
||||
Для совместного запуска (сеть, healthcheck, volume для базы данных) есть
|
||||
`docker-compose.yml` в `deploy/docker/` — разбит на базовый файл и
|
||||
окружения: `docker-compose.override.yml` (dev, подхватывается автоматически)
|
||||
и `docker-compose.prod.yml` (прод). Набор запускаемых сервисов на каждом
|
||||
хосте задаётся через `COMPOSE_PROFILES` в `.env`-файле (`control-plane`,
|
||||
`dashboard`, `prober`, `validator`) — так один и тот же compose можно
|
||||
поднять целиком локально или по частям на разных хостах (управляющая
|
||||
машина / внешняя площадка с `prober` / ВМ-валидатор), как в реальной
|
||||
топологии.
|
||||
|
||||
```bash
|
||||
cd deploy/docker
|
||||
cp .env.example .env
|
||||
cp control-api/control-api.docker.example.yaml control-api/control-api.docker.yaml
|
||||
docker compose up -d --build
|
||||
```
|
||||
|
||||
Для прода: `docker compose -f docker-compose.yml -f docker-compose.prod.yml --env-file .env.prod up -d --build`
|
||||
(см. комментарии в `.env.prod.example`).
|
||||
Reference in new issue
Block a user