services: backend: build: context: . dockerfile: ./backend/Dockerfile container_name: shadowbroker-backend ports: - "${BIND:-127.0.0.1}:8000:8000" environment: - AIS_API_KEY=${AIS_API_KEY} - OPENSKY_CLIENT_ID=${OPENSKY_CLIENT_ID} - OPENSKY_CLIENT_SECRET=${OPENSKY_CLIENT_SECRET} - LTA_ACCOUNT_KEY=${LTA_ACCOUNT_KEY} - ADMIN_KEY=${ADMIN_KEY:-} # Override allowed CORS origins (comma-separated). Auto-detects LAN IPs if empty. - CORS_ORIGINS=${CORS_ORIGINS:-} volumes: - backend_data:/app/data restart: unless-stopped healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8000/api/health"] interval: 30s timeout: 10s retries: 3 start_period: 30s deploy: resources: limits: memory: 2G cpus: '2' frontend: build: context: ./frontend container_name: shadowbroker-frontend ports: - "${BIND:-127.0.0.1}:3000:3000" environment: # Points the Next.js server-side proxy at the backend container via Docker networking. # Change this if your backend runs on a different host or port. - BACKEND_URL=http://backend:8000 depends_on: backend: condition: service_healthy restart: unless-stopped healthcheck: test: ["CMD", "wget", "-q", "--spider", "http://localhost:3000/"] interval: 30s timeout: 10s retries: 3 start_period: 20s deploy: resources: limits: memory: 512M cpus: '1' volumes: backend_data: