services: sms-campaign: build: context: . dockerfile: ./docker/dockerfile container_name: sms-campaign-manager ports: - "5000:5000" # Web interface - "5037:5037" # ADB server volumes: - ./data:/app/data # SQLite database - ./uploads:/app/uploads # CSV uploads - ./logs:/app/logs # Logs - ./src:/app/src # Live source for development - ./src/static:/app/src/static # Static assets - ./src/templates:/app/src/templates # Templates - /dev/bus/usb:/dev/bus/usb # USB devices (for direct USB connection) environment: PHONE_IP: ${PHONE_IP:-10.0.0.193} ADB_PORT: ${ADB_PORT:-5555} FLASK_ENV: ${FLASK_ENV:-production} SECRET_KEY: ${SECRET_KEY:-change-me-in-production} network_mode: host # Required for ADB network connection (host mode needed for ADB) privileged: true # Required for USB access restart: unless-stopped stop_grace_period: 30s # Give container 30 seconds to gracefully shutdown healthcheck: test: ["CMD", "curl", "-f", "http://localhost:5000/health"] interval: 30s timeout: 10s retries: 3 start_period: 40s