| version: '3.8' | |
| services: | |
| api: | |
| build: | |
| context: . | |
| dockerfile: Dockerfile | |
| ports: | |
| - "7860:7860" | |
| volumes: | |
| # Mount code for development (hot reload) | |
| - .:/app | |
| # Persistent storage for uploads/outputs | |
| - ./uploads:/app/uploads | |
| - ./outputs:/app/outputs | |
| environment: | |
| - PYTHONUNBUFFERED=1 | |
| - HF_HOME=/app/cache | |
| - LOG_LEVEL=DEBUG | |
| command: uvicorn main:app --host 0.0.0.0 --port 7860 --reload | |
| restart: unless-stopped | |
| healthcheck: | |
| test: ["CMD", "curl", "-f", "http://localhost:7860/health"] | |
| interval: 30s | |
| timeout: 10s | |
| retries: 3 | |
| start_period: 40s | |
| # Optional: Add nginx for production | |
| # nginx: | |
| # image: nginx:alpine | |
| # ports: | |
| # - "80:80" | |
| # volumes: | |
| # - ./nginx.conf:/etc/nginx/nginx.conf | |
| # depends_on: | |
| # - api | |
| # Optional: Add Redis for caching | |
| # redis: | |
| # image: redis:alpine | |
| # ports: | |
| # - "6379:6379" | |
| # volumes: | |
| # - redis-data:/data | |
| # volumes: | |
| # redis-data: | |