services: mediamtx: image: bluenviron/mediamtx:latest container_name: vsp-mediamtx restart: unless-stopped network_mode: host volumes: - ./config/mediamtx.yml:/mediamtx.yml:ro - vsp-recordings:/recordings environment: - MTX_PATH=/mediamtx.yml redis: image: redis:7-alpine container_name: vsp-redis restart: unless-stopped ports: - "127.0.0.1:6379:6379" volumes: - vsp-redis:/data app: build: . container_name: vsp-app restart: unless-stopped ports: - "127.0.0.1:8000:8000" volumes: - ./:/app:ro - vsp-recordings:/recordings - vsp-data:/data environment: - DATABASE_URL=sqlite:////data/vsp.db - REDIS_URL=redis://redis:6379/0 - MEDIAMTX_API=http://localhost:9997 - PLATERECOGNIZER_TOKEN=${PLATERECOGNIZER_TOKEN:-} - SMTP_HOST=${SMTP_HOST:-} - SMTP_PORT=${SMTP_PORT:-587} - SMTP_USER=${SMTP_USER:-} - SMTP_PASS=${SMTP_PASS:-} - SMTP_FROM=${SMTP_FROM:-} - TWILIO_SID=${TWILIO_SID:-} - TWILIO_TOKEN=${TWILIO_TOKEN:-} - TWILIO_FROM=${TWILIO_FROM:-} - TELEGRAM_BOT_TOKEN=${TELEGRAM_BOT_TOKEN:-} - TELEGRAM_CHAT_ID=${TELEGRAM_CHAT_ID:-} - ALERT_EMAIL_TO=${ALERT_EMAIL_TO:-} - ALERT_SMS_TO=${ALERT_SMS_TO:-} - ALERT_COOLDOWN_SEC=${ALERT_COOLDOWN_SEC:-30} depends_on: - redis nginx: image: nginx:alpine container_name: vsp-nginx restart: unless-stopped ports: - "8081:80" - "8444:443" volumes: - ./frontend:/usr/share/nginx/html:ro - ./config/nginx.conf:/etc/nginx/conf.d/default.conf:ro - ./config/ssl.crt:/etc/nginx/ssl/ssl.crt:ro - ./config/ssl.key:/etc/nginx/ssl/ssl.key:ro depends_on: - app volumes: vsp-recordings: vsp-redis: vsp-data: