fix: address review blockers from PR #4

Apply the three blockers and one important item identified in the
code review posted on PR #4:

- docker-compose.yml:
  * Pin images to stable tags (ollama 0.11.4, open-webui 0.6.18)
    instead of :latest / :main for reproducibility.
  * Add ollama healthcheck so open-webui waits until ollama is
    actually ready, regardless of whether deploy.sh is used.
  * depends_on now uses the 'service_healthy' condition.

- deploy.sh:
  * 'grep -q' -> 'grep -qF --' so DEFAULT_MODEL values containing
    regex metacharacters (e.g. qwen2.5:7b) match literally.
  * Add MINGW*/MSYS*/CYGWIN* case to total_ram_gb with a clear
    warning that RAM detection is unsupported on native Windows.

- .env.example:
  * Reword the security comment so it no longer reads like a
    setting line (avoids the WEBUI_AUTH=*** confusion that
    review point #4 flagged).

Validation:
- bash -n deploy.sh -> OK
- python yaml.safe_load(compose) -> OK
- All files LF, no CRLF
This commit is contained in:
2026-06-20 06:30:39 +02:00
parent 9ca770962f
commit 9547e2b7d3
3 changed files with 24 additions and 8 deletions
+1 -1
View File
@@ -14,7 +14,7 @@ OLLAMA_PORT=11434
# Si false, desactiva el login de Open WebUI.
# Recomendado solo para uso personal en local.
# NO expongas el puerto a internet con WEBUI_AUTH=false.
# NO expongas el puerto a internet sin autenticacion. Por defecto WEBUI_AUTH=***${WEBUI_AUTH:-true}.
# Valores validos: true | false
WEBUI_AUTH=true
+8 -1
View File
@@ -61,6 +61,11 @@ total_ram_gb() {
Darwin)
sysctl -n hw.memsize | awk '{printf "%d\n", $1/1024/1024/1024}'
;;
MINGW*|MSYS*|CYGWIN*)
warn "Deteccion de RAM no soportada en Windows nativo."
warn "Usa WSL2 o asume 8 GB como baseline seguro."
echo "0"
;;
*)
echo "0"
;;
@@ -86,9 +91,11 @@ until docker exec d0a1-ollama ollama list >/dev/null 2>&1; do
fi
done
# grep -qF hace match literal (sin regex), evitando que un punto en el
# nombre del modelo (p.ej. qwen2.5:7b) actue como wildcard.
# --- Modelo por defecto ------------------------------------------------------
if ! docker exec d0a1-ollama ollama list | grep -q "$DEFAULT_MODEL"; then
if ! docker exec d0a1-ollama ollama list | grep -qF -- "$DEFAULT_MODEL"; then
info "Descargando modelo por defecto: $DEFAULT_MODEL"
if [ "$RAM_GB" -gt 0 ] && [ "$RAM_GB" -lt 8 ]; then
warn "Detectados ${RAM_GB} GB de RAM. Para este modelo se recomiendan 8 GB."
+13 -4
View File
@@ -1,6 +1,7 @@
services:
ollama:
image: ollama/ollama:latest
# Pin a version estable conocida. Cambiar junto con .env.example / README.
image: ollama/ollama:0.11.4
container_name: d0a1-ollama
restart: unless-stopped
ports:
@@ -9,7 +10,13 @@ services:
- ollama_data:/root/.ollama
environment:
- OLLAMA_KEEP_ALIVE=${OLLAMA_KEEP_ALIVE:-5m}
# GPU passthrough: descomenta la sección deploy si tienes GPU NVIDIA
healthcheck:
test: ["CMD", "ollama", "list"]
interval: 10s
timeout: 5s
retries: 12
start_period: 20s
# GPU passthrough: descomenta la seccion deploy si tienes GPU NVIDIA.
# deploy:
# resources:
# reservations:
@@ -19,7 +26,8 @@ services:
# capabilities: [gpu]
open-webui:
image: ghcr.io/open-webui/open-webui:main
# Pin a version estable. La imagen :main se rompe sin aviso.
image: ghcr.io/open-webui/open-webui:0.6.18
container_name: d0a1-open-webui
restart: unless-stopped
ports:
@@ -32,7 +40,8 @@ services:
- WEBUI_SECRET_KEY=${WEBUI_SECRET_KEY:-}
- DEFAULT_MODELS=${DEFAULT_MODEL:-llama3.2:3b}
depends_on:
- ollama
ollama:
condition: service_healthy
volumes:
ollama_data: