docker-compose.yml
· 3.5 KiB · YAML
原始文件
# =============================================================================
# docker-compose.yml — Laboratorio IA Local
# =============================================================================
#
# Uso:
# docker compose up -d # Levantar todos los servicios
# docker compose down # Detener todos los servicios
# docker compose logs -f # Ver logs en tiempo real
#
# Servicios:
# - ollama: Gestor de modelos de lenguaje (API en :11434)
# - open-webui: Interfaz gráfica web (web en :3000)
#
# Requisitos:
# - Docker Engine 24+ o Podman 4+
# - Docker Compose v2+
#
# Notas:
# - Los modelos descargados se guardan en ./ollama/models (persistente)
# - Los datos de Open WebUI se guardan en ./open-webui/data (persistente)
# - Si tienes GPU NVIDIA, descomenta la sección 'deploy' en ollama
# - Las redes están separadas para aislamiento entre servicios
#
# =============================================================================
services:
# ---------------------------------------------------------------------------
# Ollama — Gestor de modelos de lenguaje
# ---------------------------------------------------------------------------
ollama:
image: ollama/ollama:latest
container_name: ollama-server
hostname: ollama
volumes:
# Persistencia de modelos descargados
- ./ollama/models:/root/.ollama
ports:
# API REST de Ollama
- "11434:11434"
environment:
# Mantener el modelo en memoria para respuestas más rápidas
- OLLAMA_KEEP_ALIVE=5m
# Número máximo de modelos cargados simultáneamente
- OLLAMA_NUM_PARALLEL=1
# Límite de contexto (ventana de tokens)
- OLLAMA_CONTEXT_LENGTH=8192
# Descomenta estas líneas si tienes GPU NVIDIA:
# deploy:
# resources:
# reservations:
# devices:
# - driver: nvidia
# count: all
# capabilities: [gpu]
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:11434/api/tags"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
networks:
- ia-local-net
# ---------------------------------------------------------------------------
# Open WebUI — Interfaz gráfica para chatear con modelos
# ---------------------------------------------------------------------------
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: open-webui
depends_on:
ollama:
condition: service_healthy
volumes:
# Persistencia de conversaciones, configuraciones, archivos subidos
- ./open-webui/data:/app/backend/data
ports:
# Interfaz web
- "3000:8080"
environment:
# URL del servicio Ollama (nombre del contenedor, no localhost)
- OLLAMA_BASE_URL=http://ollama:11434
# Tiempo máximo de espera para respuestas largas
- WEBUI_TIMEOUT=300
# Descomenta para requerir autenticación:
# - WEBUI_AUTH=true
# Descomenta para usar GPU NVIDIA en Open WebUI:
# - USE_CUDA=true
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 60s
networks:
- ia-local-net
# ---------------------------------------------------------------------------
# Redes
# ---------------------------------------------------------------------------
networks:
ia-local-net:
name: ia-local-network
driver: bridge
| 1 | # ============================================================================= |
| 2 | # docker-compose.yml — Laboratorio IA Local |
| 3 | # ============================================================================= |
| 4 | # |
| 5 | # Uso: |
| 6 | # docker compose up -d # Levantar todos los servicios |
| 7 | # docker compose down # Detener todos los servicios |
| 8 | # docker compose logs -f # Ver logs en tiempo real |
| 9 | # |
| 10 | # Servicios: |
| 11 | # - ollama: Gestor de modelos de lenguaje (API en :11434) |
| 12 | # - open-webui: Interfaz gráfica web (web en :3000) |
| 13 | # |
| 14 | # Requisitos: |
| 15 | # - Docker Engine 24+ o Podman 4+ |
| 16 | # - Docker Compose v2+ |
| 17 | # |
| 18 | # Notas: |
| 19 | # - Los modelos descargados se guardan en ./ollama/models (persistente) |
| 20 | # - Los datos de Open WebUI se guardan en ./open-webui/data (persistente) |
| 21 | # - Si tienes GPU NVIDIA, descomenta la sección 'deploy' en ollama |
| 22 | # - Las redes están separadas para aislamiento entre servicios |
| 23 | # |
| 24 | # ============================================================================= |
| 25 | |
| 26 | services: |
| 27 | # --------------------------------------------------------------------------- |
| 28 | # Ollama — Gestor de modelos de lenguaje |
| 29 | # --------------------------------------------------------------------------- |
| 30 | ollama: |
| 31 | image: ollama/ollama:latest |
| 32 | container_name: ollama-server |
| 33 | hostname: ollama |
| 34 | volumes: |
| 35 | # Persistencia de modelos descargados |
| 36 | - ./ollama/models:/root/.ollama |
| 37 | ports: |
| 38 | # API REST de Ollama |
| 39 | - "11434:11434" |
| 40 | environment: |
| 41 | # Mantener el modelo en memoria para respuestas más rápidas |
| 42 | - OLLAMA_KEEP_ALIVE=5m |
| 43 | # Número máximo de modelos cargados simultáneamente |
| 44 | - OLLAMA_NUM_PARALLEL=1 |
| 45 | # Límite de contexto (ventana de tokens) |
| 46 | - OLLAMA_CONTEXT_LENGTH=8192 |
| 47 | # Descomenta estas líneas si tienes GPU NVIDIA: |
| 48 | # deploy: |
| 49 | # resources: |
| 50 | # reservations: |
| 51 | # devices: |
| 52 | # - driver: nvidia |
| 53 | # count: all |
| 54 | # capabilities: [gpu] |
| 55 | restart: unless-stopped |
| 56 | healthcheck: |
| 57 | test: ["CMD", "curl", "-f", "http://localhost:11434/api/tags"] |
| 58 | interval: 30s |
| 59 | timeout: 10s |
| 60 | retries: 3 |
| 61 | start_period: 40s |
| 62 | networks: |
| 63 | - ia-local-net |
| 64 | |
| 65 | # --------------------------------------------------------------------------- |
| 66 | # Open WebUI — Interfaz gráfica para chatear con modelos |
| 67 | # --------------------------------------------------------------------------- |
| 68 | open-webui: |
| 69 | image: ghcr.io/open-webui/open-webui:main |
| 70 | container_name: open-webui |
| 71 | depends_on: |
| 72 | ollama: |
| 73 | condition: service_healthy |
| 74 | volumes: |
| 75 | # Persistencia de conversaciones, configuraciones, archivos subidos |
| 76 | - ./open-webui/data:/app/backend/data |
| 77 | ports: |
| 78 | # Interfaz web |
| 79 | - "3000:8080" |
| 80 | environment: |
| 81 | # URL del servicio Ollama (nombre del contenedor, no localhost) |
| 82 | - OLLAMA_BASE_URL=http://ollama:11434 |
| 83 | # Tiempo máximo de espera para respuestas largas |
| 84 | - WEBUI_TIMEOUT=300 |
| 85 | # Descomenta para requerir autenticación: |
| 86 | # - WEBUI_AUTH=true |
| 87 | # Descomenta para usar GPU NVIDIA en Open WebUI: |
| 88 | # - USE_CUDA=true |
| 89 | restart: unless-stopped |
| 90 | healthcheck: |
| 91 | test: ["CMD", "curl", "-f", "http://localhost:8080/health"] |
| 92 | interval: 30s |
| 93 | timeout: 10s |
| 94 | retries: 3 |
| 95 | start_period: 60s |
| 96 | networks: |
| 97 | - ia-local-net |
| 98 | |
| 99 | # --------------------------------------------------------------------------- |
| 100 | # Redes |
| 101 | # --------------------------------------------------------------------------- |
| 102 | networks: |
| 103 | ia-local-net: |
| 104 | name: ia-local-network |
| 105 | driver: bridge |