version: '3.8' services: # 1. MOTOR DE INFERENCIA DE PRODUCCIÓN (vLLM) vllm: image: vllm/vllm-openai:latest container_name: vllm-engine restart: unless-stopped environment: - HUGGING_FACE_HUB_TOKEN=${HF_TOKEN} - VLLM_LOGGING_LEVEL=INFO volumes: - ./models_cache:/root/.cache/huggingface:Z # :Z para compatibilidad SELinux en RHEL/Fedora ports: - "8000:8000" command: > --model ${MODEL_ID} --quantization awq --dtype half --gpu-memory-utilization ${GPU_MEMORY_UTILIZATION} --max-model-len ${MAX_MODEL_LEN} --max-num-seqs ${MAX_NUM_SEQS} --block-size 16 --port 8000 deploy: resources: reservations: devices: - driver: nvidia count: all capabilities: [gpu] networks: - vllm-net healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8000/health"] interval: 10s timeout: 5s retries: 10 start_period: 60s # 2. PROXY DE RED, RESILIENCIA Y CIRCUIT BREAKER (LiteLLM) litellm: image: ghcr.io/berriai/litellm:main-latest container_name: litellm-gateway restart: unless-stopped volumes: - ./litellm/config.yaml:/app/config.yaml:ro,Z ports: - "4000:4000" command: ["--config", "/app/config.yaml", "--port", "4000"] depends_on: vllm: condition: service_healthy networks: - vllm-net # 3. OBSERVABILIDAD: RECOLECTOR DE TELEMETRÍA (Prometheus) prometheus: image: prom/prometheus:latest container_name: prometheus-telemetry restart: unless-stopped volumes: - ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml:ro,Z - prometheus-data:/prometheus:Z ports: - "9090:9090" command: - '--config.file=/etc/prometheus/prometheus.yml' - '--storage.tsdb.path=/prometheus' - '--web.console.libraries=/usr/share/prometheus/console_libraries' - '--web.console.templates=/usr/share/prometheus/consoles' networks: - vllm-net # 4. OBSERVABILIDAD: VISUALIZACIÓN EN TIEMPO REAL (Grafana) grafana: image: grafana/grafana:latest container_name: grafana-dashboard restart: unless-stopped environment: - GF_SECURITY_ADMIN_USER=admin - GF_SECURITY_ADMIN_PASSWORD=admin - GF_USERS_ALLOW_SIGN_UP=false volumes: - ./grafana/provisioning:/etc/grafana/provisioning:ro,Z - grafana-data:/var/lib/grafana:Z ports: - "3000:3000" depends_on: - prometheus networks: - vllm-net networks: vllm-net: driver: bridge volumes: prometheus-data: grafana-data: