init
This commit is contained in:
112
docker-compose.yaml
Normal file
112
docker-compose.yaml
Normal file
@@ -0,0 +1,112 @@
|
||||
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}
|
||||
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
|
||||
Reference in New Issue
Block a user