|
version: '3.8'
|
|
|
|
services:
|
|
product-image-update:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile
|
|
ports:
|
|
- "7860:7860"
|
|
environment:
|
|
|
|
- HF_TOKEN=${HF_TOKEN}
|
|
- CUDA_VISIBLE_DEVICES=${CUDA_VISIBLE_DEVICES:-0}
|
|
- PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:512
|
|
- TRANSFORMERS_CACHE=/app/.cache/huggingface
|
|
- HF_HOME=/app/.cache/huggingface
|
|
- GRADIO_SERVER_NAME=0.0.0.0
|
|
- GRADIO_SERVER_PORT=7860
|
|
- DEBUG=${DEBUG:-false}
|
|
volumes:
|
|
|
|
- huggingface-cache:/app/.cache/huggingface
|
|
- torch-cache:/app/.cache/torch
|
|
- models-cache:/app/models
|
|
|
|
- ./processed_imgs:/app/processed_imgs
|
|
|
|
- ./app.py:/app/app.py:ro
|
|
- ./utils.py:/app/utils.py:ro
|
|
- ./image-download:/app/image-download:ro
|
|
- ./remove-background:/app/remove-background:ro
|
|
- ./bounding-box:/app/bounding-box:ro
|
|
- ./cropping-padding:/app/cropping-padding:ro
|
|
- ./return-images:/app/return-images:ro
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
memory: 16G
|
|
reservations:
|
|
devices:
|
|
- driver: nvidia
|
|
count: 1
|
|
capabilities: [gpu]
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:7860/health"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 60s
|
|
restart: unless-stopped
|
|
networks:
|
|
- app-network
|
|
|
|
|
|
nginx:
|
|
image: nginx:alpine
|
|
ports:
|
|
- "80:80"
|
|
- "443:443"
|
|
volumes:
|
|
- ./nginx.conf:/etc/nginx/nginx.conf:ro
|
|
- ./ssl:/etc/nginx/ssl:ro
|
|
depends_on:
|
|
- product-image-update
|
|
networks:
|
|
- app-network
|
|
profiles:
|
|
- production
|
|
|
|
|
|
prometheus:
|
|
image: prom/prometheus:latest
|
|
ports:
|
|
- "9090:9090"
|
|
volumes:
|
|
- ./prometheus.yml:/etc/prometheus/prometheus.yml:ro
|
|
- prometheus-data:/prometheus
|
|
command:
|
|
- '--config.file=/etc/prometheus/prometheus.yml'
|
|
- '--storage.tsdb.path=/prometheus'
|
|
networks:
|
|
- app-network
|
|
profiles:
|
|
- monitoring
|
|
|
|
|
|
grafana:
|
|
image: grafana/grafana:latest
|
|
ports:
|
|
- "3000:3000"
|
|
environment:
|
|
- GF_SECURITY_ADMIN_PASSWORD=admin
|
|
volumes:
|
|
- grafana-data:/var/lib/grafana
|
|
depends_on:
|
|
- prometheus
|
|
networks:
|
|
- app-network
|
|
profiles:
|
|
- monitoring
|
|
|
|
volumes:
|
|
huggingface-cache:
|
|
driver: local
|
|
torch-cache:
|
|
driver: local
|
|
models-cache:
|
|
driver: local
|
|
prometheus-data:
|
|
driver: local
|
|
grafana-data:
|
|
driver: local
|
|
|
|
networks:
|
|
app-network:
|
|
driver: bridge |