Files
ghostnet-openclaw/ollama/entrypoint.sh
T

57 lines
1.6 KiB
Bash
Executable File

#!/bin/bash
# --- FUNKTION: Signal-Handling ---
# Diese Funktion wird aufgerufen, wenn der Container gestoppt werden soll
# (SIGTERM/SIGINT)
cleanup() {
echo "--- Abbruchsignal empfangen! Beende Ollama sauber... ---"
kill "$OLLAMA_PID" 2>/dev/null
wait "$OLLAMA_PID" 2>/dev/null
exit 0
}
# Registriere die Cleanup-Funktion für SIGTERM (Stop) und SIGINT (Strg+C)
trap cleanup SIGTERM SIGINT
# --- SCHRITT 1: Ollama Server starten ---
echo "--- Starte Ollama Server im Hintergrund ---"
ollama serve &
OLLAMA_PID=$!
# --- SCHRITT 2: Robuster API-Health-Check ---
echo "--- Warte auf Ollama Server (API Check) ---"
MAX_RETRIES=30
COUNT=0
# Wir nutzen ollama list selbst als Healthcheck, das ist 100% verlässlich
until ollama list &>/dev/null || [ $COUNT -eq $MAX_RETRIES ]; do
sleep 2
COUNT=$((COUNT + 1))
echo "Warte auf API-Bereitschaft... ($COUNT/$MAX_RETRIES)"
done
if [ $COUNT -eq $MAX_RETRIES ]; then
echo "FEHLER: Ollama Server ist nach 60 Sekunden nicht bereit."
exit 1
fi
echo "--- Ollama Server ist online und bereit für Pulls! ---"
# --- SCHRITT 3: Modelle fehlerfrei herunterladen ---
# Wir nutzen ein alternatives Parsing, das immun gegen komplexe Strings ist
if [ -z "$MODEL_LIST" ]; then
echo "WARNUNG: Keine Modelle in MODEL_LIST definiert."
else
echo "--- Modell-Check gestartet ---"
# Ersetzt Kommas durch Leerzeichen und läuft sauber durch jedes Modell
for model in $(echo "$MODEL_LIST" | tr ',' ' '); do
echo "Prüfe Modell: $model"
ollama pull "$model"
done
echo "--- Alle Modelle sind bereit ---"
fi
# --- SCHRITT 4: Hauptprozess halten ---
wait $OLLAMA_PID