diff --git a/features/video-studio/docker-compose.yml b/features/video-studio/docker-compose.yml new file mode 100644 index 000000000..4dc29011b --- /dev/null +++ b/features/video-studio/docker-compose.yml @@ -0,0 +1,51 @@ +version: "3.9" + +services: + postgres: + image: postgres:16-alpine + container_name: lilith-video-studio-postgres + environment: + POSTGRES_DB: video_studio + POSTGRES_USER: ${DATABASE_POSTGRES_USER:-lilith} + POSTGRES_PASSWORD: ${DATABASE_POSTGRES_PASSWORD:-lilith_dev} + ports: + - "25470:5432" + volumes: + - video_studio_postgres_data:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U ${DATABASE_POSTGRES_USER:-lilith} -d video_studio"] + interval: 10s + timeout: 5s + retries: 5 + + processing-service: + build: + context: ./processing-service + dockerfile: Dockerfile + container_name: lilith-video-studio-processing + environment: + REDIS_URL: ${REDIS_URL:-redis://host.docker.internal:6379/5} + USE_GPU: ${USE_GPU:-true} + PYTHONUNBUFFERED: "1" + ports: + - "8110:8110" + volumes: + # Mount shared media storage so the service can read/write video files + - ${MEDIA_STORAGE_PATH:-/tmp/lilith-media}:/media + runtime: nvidia # Remove if GPU not available; set USE_GPU=false + deploy: + resources: + reservations: + devices: + - driver: nvidia + count: 1 + capabilities: [gpu] + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8110/health"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 60s # Allow time for InsightFace model load + +volumes: + video_studio_postgres_data: