Files
ad-infr-control/docker-compose.yaml
ilyastar9999 54c5dc9821 asd
2025-12-03 10:31:37 +03:00

115 lines
3.5 KiB
YAML

version: '3.8'
services:
# Shared PostgreSQL database for controller and scoreboard
postgres:
image: postgres:16
container_name: adctrl-postgres
environment:
POSTGRES_USER: ${POSTGRES_USER:-adctrl}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-adctrl_secure_password}
POSTGRES_DB: ${POSTGRES_DB:-adctrl}
volumes:
- postgres-data:/var/lib/postgresql/data
- ./init-db.sql:/docker-entrypoint-initdb.d/init-db.sql
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-adctrl}"]
interval: 5s
timeout: 5s
retries: 5
restart: unless-stopped
networks:
- adctrl-network
# API Controller - manages docker services
controller:
build: ./controler
container_name: adctrl-controller
environment:
DATABASE_URL: postgresql://${POSTGRES_USER:-adctrl}:${POSTGRES_PASSWORD:-adctrl_secure_password}@postgres:5432/${POSTGRES_DB:-adctrl}
SECRET_TOKEN: ${SECRET_TOKEN}
SERVICES_DIR: /services
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ${SERVICES_DIR:-./services}:/services
depends_on:
postgres:
condition: service_healthy
ports:
- "8001:8001"
restart: unless-stopped
networks:
- adctrl-network
# Scoreboard Injector - monitors attacks
scoreboard-injector:
build: ./scoreboard_injector
container_name: adctrl-scoreboard
environment:
DATABASE_URL: postgresql://${POSTGRES_USER:-adctrl}:${POSTGRES_PASSWORD:-adctrl_secure_password}@postgres:5432/${POSTGRES_DB:-adctrl}
SECRET_TOKEN: ${SECRET_TOKEN}
SCOREBOARD_WS_URL: ${SCOREBOARD_WS_URL:-ws://10.60.0.1:8080/api/events}
SCOREBOARD_API_URL: ${SCOREBOARD_API_URL:-http://10.60.0.1:8080/api}
USE_HTTP_POLLING: ${USE_HTTP_POLLING:-false}
POLLING_INTERVAL: ${POLLING_INTERVAL:-10}
OUR_TEAM_ID: ${OUR_TEAM_ID:-1}
ALERT_THRESHOLD_POINTS: ${ALERT_THRESHOLD_POINTS:-100}
ALERT_THRESHOLD_TIME: ${ALERT_THRESHOLD_TIME:-300}
TELEGRAM_API_URL: http://tg-bot:8003/send
depends_on:
postgres:
condition: service_healthy
tg-bot:
condition: service_started
ports:
- "8002:8002"
restart: unless-stopped
networks:
- adctrl-network
# Telegram Bot - sends notifications
tg-bot:
build: ./tg-bot
container_name: adctrl-telegram
environment:
DATABASE_URL: postgresql://${POSTGRES_USER:-adctrl}:${POSTGRES_PASSWORD:-adctrl_secure_password}@postgres:5432/${POSTGRES_DB:-adctrl}
SECRET_TOKEN: ${SECRET_TOKEN}
TELEGRAM_BOT_TOKEN: ${TELEGRAM_BOT_TOKEN}
TELEGRAM_CHAT_ID: ${TELEGRAM_CHAT_ID}
depends_on:
postgres:
condition: service_healthy
ports:
- "8003:8003"
restart: unless-stopped
networks:
- adctrl-network
# Web Dashboard
web:
build: ./web
container_name: adctrl-web
environment:
DATABASE_URL: postgresql://${POSTGRES_USER:-adctrl}:${POSTGRES_PASSWORD:-adctrl_secure_password}@postgres:5432/${POSTGRES_DB:-adctrl}
SECRET_TOKEN: ${SECRET_TOKEN}
WEB_PASSWORD: ${WEB_PASSWORD:-admin123}
FLASK_SECRET_KEY: ${FLASK_SECRET_KEY:-change-me-flask-secret}
CONTROLLER_API: http://controller:8001
SCOREBOARD_API: http://scoreboard-injector:8002
TELEGRAM_API: http://tg-bot:8003
depends_on:
- controller
- scoreboard-injector
- tg-bot
ports:
- "8000:8000"
restart: unless-stopped
networks:
- adctrl-network
volumes:
postgres-data:
networks:
adctrl-network:
driver: bridge