Spaces:
Runtime error
Runtime error
| set -euo pipefail | |
| echo "🚀 Iniciando Llama Dev Suite PRO v5 en HF Spaces" | |
| OLLAMA_BIN="$(command -v ollama || true)" | |
| if [ -z "$OLLAMA_BIN" ]; then | |
| echo "❌ No se encontró el binario de Ollama dentro del contenedor." | |
| echo " Verifica que la imagen incluya Ollama (usa el runtime Docker o rebuild)." | |
| exit 1 | |
| fi | |
| LOG_FILE="/tmp/ollama.log" | |
| echo "📡 Iniciando servidor Ollama..." | |
| "$OLLAMA_BIN" serve > "$LOG_FILE" 2>&1 & | |
| OLLAMA_PID=$! | |
| cleanup() { | |
| echo "🧹 Deteniendo procesos..." | |
| if kill -0 "$OLLAMA_PID" >/dev/null 2>&1; then | |
| kill "$OLLAMA_PID" >/dev/null 2>&1 || true | |
| fi | |
| if [ -n "${APP_PID:-}" ] && kill -0 "$APP_PID" >/dev/null 2>&1; then | |
| kill "$APP_PID" >/dev/null 2>&1 || true | |
| fi | |
| } | |
| trap cleanup EXIT | |
| TARGET_URL="${LLAMA_DEV_OLLAMA_URL:-http://127.0.0.1:11434}" | |
| WAIT_SECONDS="${OLLAMA_WAIT_TIMEOUT:-60}" | |
| echo "⌛ Esperando a que Ollama escuche en ${TARGET_URL} (timeout: ${WAIT_SECONDS}s)..." | |
| READY=0 | |
| for ((second = 1; second <= WAIT_SECONDS; second++)); do | |
| if curl -sf "${TARGET_URL}/api/version" >/dev/null 2>&1; then | |
| VERSION=$(curl -sf "${TARGET_URL}/api/version" | grep -o '"version":"[^"]*"' | cut -d'"' -f4) | |
| echo "✅ Ollama está corriendo (PID: $OLLAMA_PID, versión: ${VERSION:-desconocida})" | |
| READY=1 | |
| break | |
| fi | |
| if ! kill -0 "$OLLAMA_PID" >/dev/null 2>&1; then | |
| echo "❌ El proceso de Ollama terminó inesperadamente. Logs:" | |
| cat "$LOG_FILE" | |
| exit 1 | |
| fi | |
| sleep 1 | |
| done | |
| if [ "$READY" -ne 1 ]; then | |
| echo "❌ ERROR: Ollama no pudo iniciarse en ${WAIT_SECONDS}s." | |
| echo "📋 Últimos logs:" | |
| tail -n 200 "$LOG_FILE" || true | |
| exit 1 | |
| fi | |
| if [ -n "${OLLAMA_AUTO_PULL:-}" ]; then | |
| echo "📥 Descargando modelo '${OLLAMA_AUTO_PULL}' en el arranque..." | |
| if "$OLLAMA_BIN" pull "$OLLAMA_AUTO_PULL"; then | |
| echo "✅ Modelo '${OLLAMA_AUTO_PULL}' disponible." | |
| else | |
| echo "⚠️ No se pudo descargar el modelo '${OLLAMA_AUTO_PULL}'. Continúo sin él." | |
| fi | |
| fi | |
| if [ -n "$HF_TOKEN" ]; then | |
| echo "🔑 Configurando acceso a modelos privados de HF..." | |
| mkdir -p ~/.ollama | |
| fi | |
| echo "🎨 Iniciando aplicación Gradio..." | |
| python -u app.py & | |
| APP_PID=$! | |
| wait "$APP_PID" | |