| | version: '3.8' |
| |
|
| | services: |
| | |
| | backgroundfx-gpu: |
| | build: |
| | context: .. |
| | dockerfile: docker/Dockerfile |
| | image: backgroundfx-pro:gpu |
| | container_name: backgroundfx-gpu |
| | runtime: nvidia |
| | environment: |
| | - NVIDIA_VISIBLE_DEVICES=0 |
| | - CUDA_VISIBLE_DEVICES=0 |
| | - GRADIO_SERVER_NAME=0.0.0.0 |
| | - GRADIO_SERVER_PORT=7860 |
| | - MODEL_CACHE_DIR=/app/models |
| | - TORCH_HOME=/app/models/.cache |
| | - LOG_LEVEL=INFO |
| | - MAX_WORKERS=4 |
| | volumes: |
| | - model-cache:/app/models |
| | - uploads:/app/uploads |
| | - outputs:/app/outputs |
| | - ./config:/app/config:ro |
| | ports: |
| | - "7860:7860" |
| | - "8000:8000" |
| | networks: |
| | - backgroundfx-net |
| | healthcheck: |
| | test: ["CMD", "curl", "-f", "http://localhost:7860/health"] |
| | interval: 30s |
| | timeout: 10s |
| | retries: 3 |
| | start_period: 60s |
| | deploy: |
| | resources: |
| | reservations: |
| | devices: |
| | - driver: nvidia |
| | count: 1 |
| | capabilities: [gpu] |
| | limits: |
| | memory: 16G |
| | cpus: '8' |
| | restart: unless-stopped |
| |
|
| | |
| | backgroundfx-cpu: |
| | build: |
| | context: .. |
| | dockerfile: docker/Dockerfile.cpu |
| | image: backgroundfx-pro:cpu |
| | container_name: backgroundfx-cpu |
| | profiles: ["cpu"] |
| | environment: |
| | - GRADIO_SERVER_NAME=0.0.0.0 |
| | - GRADIO_SERVER_PORT=7860 |
| | - MODEL_CACHE_DIR=/app/models |
| | - TORCH_HOME=/app/models/.cache |
| | - DEVICE=cpu |
| | - LOG_LEVEL=INFO |
| | volumes: |
| | - model-cache:/app/models |
| | - uploads:/app/uploads |
| | - outputs:/app/outputs |
| | - ./config:/app/config:ro |
| | ports: |
| | - "7861:7860" |
| | networks: |
| | - backgroundfx-net |
| | deploy: |
| | resources: |
| | limits: |
| | memory: 8G |
| | cpus: '4' |
| | restart: unless-stopped |
| |
|
| | |
| | redis: |
| | image: redis:7-alpine |
| | container_name: backgroundfx-redis |
| | command: redis-server --appendonly yes |
| | volumes: |
| | - redis-data:/data |
| | ports: |
| | - "6379:6379" |
| | networks: |
| | - backgroundfx-net |
| | healthcheck: |
| | test: ["CMD", "redis-cli", "ping"] |
| | interval: 10s |
| | timeout: 5s |
| | retries: 5 |
| | restart: unless-stopped |
| |
|
| | |
| | nginx: |
| | image: nginx:alpine |
| | container_name: backgroundfx-nginx |
| | profiles: ["production"] |
| | volumes: |
| | - ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro |
| | - ./nginx/ssl:/etc/nginx/ssl:ro |
| | - nginx-cache:/var/cache/nginx |
| | ports: |
| | - "80:80" |
| | - "443:443" |
| | networks: |
| | - backgroundfx-net |
| | depends_on: |
| | - backgroundfx-gpu |
| | restart: unless-stopped |
| |
|
| | |
| | model-downloader: |
| | build: |
| | context: .. |
| | dockerfile: docker/Dockerfile.models |
| | image: backgroundfx-pro:models |
| | container_name: backgroundfx-models |
| | profiles: ["setup"] |
| | environment: |
| | - MODEL_DIR=/models |
| | volumes: |
| | - model-cache:/models |
| | command: ["python", "download_models.py", "--all"] |
| | networks: |
| | - backgroundfx-net |
| |
|
| | |
| | prometheus: |
| | image: prom/prometheus:latest |
| | container_name: backgroundfx-prometheus |
| | profiles: ["monitoring"] |
| | volumes: |
| | - ./monitoring/prometheus.yml:/etc/prometheus/prometheus.yml:ro |
| | - prometheus-data:/prometheus |
| | ports: |
| | - "9090:9090" |
| | networks: |
| | - backgroundfx-net |
| | restart: unless-stopped |
| |
|
| | |
| | grafana: |
| | image: grafana/grafana:latest |
| | container_name: backgroundfx-grafana |
| | profiles: ["monitoring"] |
| | environment: |
| | - GF_SECURITY_ADMIN_PASSWORD=admin |
| | - GF_INSTALL_PLUGINS=redis-datasource |
| | volumes: |
| | - grafana-data:/var/lib/grafana |
| | - ./monitoring/grafana:/etc/grafana/provisioning:ro |
| | ports: |
| | - "3000:3000" |
| | networks: |
| | - backgroundfx-net |
| | depends_on: |
| | - prometheus |
| | restart: unless-stopped |
| |
|
| | networks: |
| | backgroundfx-net: |
| | driver: bridge |
| |
|
| | volumes: |
| | model-cache: |
| | driver: local |
| | uploads: |
| | driver: local |
| | outputs: |
| | driver: local |
| | redis-data: |
| | driver: local |
| | nginx-cache: |
| | driver: local |
| | prometheus-data: |
| | driver: local |
| | grafana-data: |
| | driver: local |