Files
dipl-edr/docker-compose.yml

50 lines
1.9 KiB
YAML

version: "3.9"
services:
# ── FastAPI backend ────────────────────────────────────────────────────────
backend:
build: ./backend
volumes:
- ./data:/app/data # SQLite-база и модель
ports:
- "8000:8000" # API-документация: http://localhost:8000/docs
environment:
- DB_PATH=/app/data/edr.db
restart: unless-stopped
healthcheck:
test: ["CMD", "python", "-c",
"import urllib.request; urllib.request.urlopen('http://localhost:8000/api/stats')"]
interval: 10s
timeout: 5s
retries: 10
start_period: 5s
# ── Python мониторинг-агент ────────────────────────────────────────────────
agent:
build: ./agent
volumes:
- ./data:/app/data # общий том с моделью и БД
environment:
- BACKEND_URL=http://backend:8000
- COLLECT_INTERVAL=5
- MODEL_PATH=/app/data/model.pkl
- DATASET_PATH=/app/data/UNSW_NB15_training-set.csv
depends_on:
backend:
condition: service_healthy
pid: host # видит процессы хоста
privileged: true # psutil net_connections требует root
restart: unless-stopped
# ── React-дашборд (nginx) ──────────────────────────────────────────────────
frontend:
build: ./frontend # multi-stage: node build → nginx
ports:
- "3000:3000" # Dashboard: http://localhost:3000
depends_on:
- backend
restart: unless-stopped
volumes: {}