| version: '3.8' | |
| services: | |
| transformer-api: | |
| build: | |
| context: . | |
| dockerfile: Dockerfile | |
| ports: | |
| - "8000:8000" | |
| environment: | |
| - MODEL_PATH=${MODEL_PATH:-distilbert-base-uncased-finetuned-sst-2-english} | |
| - TRANSFORMERS_CACHE=/app/cache | |
| volumes: | |
| - model_cache:/app/cache | |
| - ./results:/app/results:ro # Mount trained models | |
| restart: unless-stopped | |
| healthcheck: | |
| test: ["CMD", "curl", "-f", "http://localhost:8000/health"] | |
| interval: 30s | |
| timeout: 10s | |
| retries: 3 | |
| start_period: 60s | |
| # Optional: Redis for caching predictions | |
| redis: | |
| image: redis:7-alpine | |
| ports: | |
| - "6379:6379" | |
| command: redis-server --appendonly yes | |
| volumes: | |
| - redis_data:/data | |
| restart: unless-stopped | |
| # Optional: Monitoring with Prometheus | |
| prometheus: | |
| image: prom/prometheus:latest | |
| ports: | |
| - "9090:9090" | |
| volumes: | |
| - ./monitoring/prometheus.yml:/etc/prometheus/prometheus.yml:ro | |
| - prometheus_data:/prometheus | |
| command: | |
| - '--config.file=/etc/prometheus/prometheus.yml' | |
| - '--storage.tsdb.path=/prometheus' | |
| - '--web.console.libraries=/etc/prometheus/console_libraries' | |
| - '--web.console.templates=/etc/prometheus/consoles' | |
| restart: unless-stopped | |
| volumes: | |
| model_cache: | |
| redis_data: | |
| prometheus_data: |