version: '3.8' services: # Main Web Application web: build: . ports: - "8080:8080" volumes: - ./storage:/app/storage - ./src:/app/src - ./public:/app/public - ./templates:/app/templates - ./config:/app/config environment: - FFMPEG_PATH=/usr/bin/ffmpeg - FFPROBE_PATH=/usr/bin/ffprobe - FFMPEG_THREADS=4 restart: unless-stopped healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8080/api/system"] interval: 30s timeout: 10s retries: 3 # WebSocket Server for real-time updates websocket: build: . command: php bin/websocket-server.php ports: - "8081:8081" volumes: - ./storage:/app/storage - ./src:/app/src - ./config:/app/config depends_on: - web restart: unless-stopped # Queue Worker for batch processing worker: build: . command: php bin/queue-worker.php volumes: - ./storage:/app/storage - ./src:/app/src - ./config:/app/config environment: - FFMPEG_PATH=/usr/bin/ffmpeg - FFPROBE_PATH=/usr/bin/ffprobe - FFMPEG_THREADS=2 depends_on: - web restart: unless-stopped