50 lines
1.9 KiB
YAML
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: {}
|