Point rxprod-compose at prebuilt images and its own control-api.yaml/capi-db

docker-compose.yml now runs from prebuilt images (civ-capi/civ-adash/
civ-prober) instead of building from source, mounts this host's own
rxprod-compose/control-api.yaml and capi-db/ (both local, gitignored
except control-api.yaml itself which is now committed), and moves
control-api off port 8080 onto 8081.

rxprod-compose/sources/ carries local copies of the example configs
(admin-dashboard/control-api/prober/validator-agent) plus .env.example,
moved here from rxprod-compose/.env.example, for reference alongside
this specific deployment's docker-compose.yml.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
ayurishchevandClaude Sonnet 5 committed 2026-09-18 10:58:00 +03:00
1 parent c7710145a1
commit 6117c044b5
6 files changed
+184 -35

No files matched your search

+9 -35
View File
@@ -1,18 +1,3 @@
# Простой (без profiles/override/prod) docker-compose для сервера с ролями
# control-api + admin-dashboard + prober. Реальный OpenStack (mode: real) —
# validator-agent сюда не входит, он работает отдельно на реальных
# ВМ-валидаторах в облаке и обращается к control-api по адресу этого хоста.
#
# Запуск:
# cp .env.example .env # заполнить реальными OS_*-креденшлами и PROBER_SITE_ID
# # поправить путь к control-api.yaml ниже, если реальный файл лежит не в
# # /etc/cloud-ip-validator/control-api.yaml
# docker compose up -d --build
# curl -s http://localhost:8080/healthz
#
# (из корня репозитория тот же стек можно поднять гибче, с profiles и
# dev/prod-разделением — см. deploy/docker/docker-compose.yml)
name: cloud-ip-validator
networks:
@@ -25,20 +10,15 @@ volumes:
services:
control-api:
build:
context: ..
dockerfile: deploy/docker/control-api/Dockerfile
image: cloud-ip-validator-control-api
image: civ-capi
platform: linux/amd64
restart: unless-stopped
networks: [backend]
ports:
- "8080:8080"
- "8081:8081"
volumes:
# Поправьте путь слева, если реальный control-api.yaml (mode: real,
# с настоящими validators/sites/targets/ip_addresses) лежит не здесь.
- /etc/cloud-ip-validator/control-api.yaml:/etc/cloud-ip-validator/control-api.yaml:ro
- control-api-db:/var/lib/cloud-ip-validator
- /opt/lvraid/claude/cloud_ip_validator/rxprod-compose/control-api.yaml:/etc/cloud-ip-validator/control-api.yaml:ro
- /opt/lvraid/claude/cloud_ip_validator/rxprod-compose/capi-db:/var/lib/cloud-ip-validator
environment:
OS_AUTH_URL: "${OS_AUTH_URL}"
OS_PROJECT_ID: "${OS_PROJECT_ID}"
@@ -49,40 +29,34 @@ services:
OS_USER_DOMAIN_NAME: "${OS_USER_DOMAIN_NAME:-}"
OS_PASSWORD: "${OS_PASSWORD:-}"
healthcheck:
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://127.0.0.1:8080/healthz"]
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://127.0.0.1:8081/healthz"]
interval: 5s
timeout: 3s
retries: 10
start_period: 5s
admin-dashboard:
build:
context: ..
dockerfile: deploy/docker/admin-dashboard/Dockerfile
image: cloud-ip-validator-admin-dashboard
image: civ-adash
platform: linux/amd64
restart: unless-stopped
networks: [backend]
ports:
- "8090:8090"
environment:
ADMIN_DASHBOARD_CONTROL_API_URL: http://control-api:8080
ADMIN_DASHBOARD_CONTROL_API_URL: http://control-api:8081
depends_on:
control-api:
condition: service_healthy
prober:
build:
context: ..
dockerfile: deploy/docker/prober/Dockerfile
image: cloud-ip-validator-prober
image: civ-prober
platform: linux/amd64
restart: unless-stopped
networks: [backend]
cap_add: [NET_RAW]
environment:
PROBER_SITE_ID: "${PROBER_SITE_ID}"
PROBER_CONTROL_API_URL: http://control-api:8080
PROBER_CONTROL_API_URL: http://control-api:8081
depends_on:
control-api:
condition: service_healthy