version: '3.8' services: api: build: context: . dockerfile: Dockerfile container_name: ai-video-dubbing-api ports: - "8000:8000" volumes: - ./storage:/app/storage - ./alembic:/app/alembic environment: # Database - DATABASE_URL=sqlite:////app/storage/db/db.sqlite # OpenAI (required for transcription and translation) - OPENAI_API_KEY=${OPENAI_API_KEY} # AWS S3 (required for video storage) - AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID} - AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY} - AWS_REGION=${AWS_REGION:-us-east-1} - S3_BUCKET_NAME=${S3_BUCKET_NAME} # Google OAuth (required for authentication) - GOOGLE_CLIENT_ID=${GOOGLE_CLIENT_ID} - GOOGLE_CLIENT_SECRET=${GOOGLE_CLIENT_SECRET} - GOOGLE_REDIRECT_URI=${GOOGLE_REDIRECT_URI:-http://localhost:3000/auth/callback} # Application settings - DEBUG=${DEBUG:-false} - LOG_LEVEL=${LOG_LEVEL:-info} restart: unless-stopped healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8000/health"] interval: 30s timeout: 10s retries: 3 start_period: 40s networks: - app-network # Optional: Add a reverse proxy (uncomment if needed) # nginx: # image: nginx:alpine # container_name: ai-video-dubbing-nginx # ports: # - "80:80" # - "443:443" # volumes: # - ./nginx.conf:/etc/nginx/nginx.conf:ro # - ./ssl:/etc/ssl:ro # depends_on: # - api # restart: unless-stopped # networks: # - app-network networks: app-network: driver: bridge volumes: storage: driver: local