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