Files
vllm-production/docker-compose.yml

102 lines
2.6 KiB
YAML

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: