services: # ============================================================================= # 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 # # ============================================================================= # --------------------------------------------------------------------------- # Ollama — Gestor de modelos de lenguaje # --------------------------------------------------------------------------- ollama: image: ollama/ollama:latest container_name: ollama hostname: ollama restart: unless-stopped networks: - ia-local ports: # API REST de Ollama - "11434:11434" volumes: # Persistencia de modelos descargados - /mnt/user/lab-ia/modelos:/root/.ollama 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 healthcheck: test: kill -0 1 interval: 60s start_period: 120s # --------------------------------------------------------------------------- # Open WebUI — Interfaz gráfica para chatear con modelos # --------------------------------------------------------------------------- open-webui: image: ghcr.io/open-webui/open-webui:main container_name: open-webui restart: unless-stopped networks: - ia-local ports: # Interfaz web - "3000:8080" depends_on: ollama: condition: service_healthy volumes: # Persistencia de conversaciones, configuraciones, archivos subidos - /mnt/user/lab-ia/open-webui:/app/backend/data 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 healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8080/health"] interval: 30s timeout: 10s retries: 3 start_period: 60s # --------------------------------------------------------------------------- # Redes # --------------------------------------------------------------------------- networks: ia-local: name: ia-local-network driver: bridge