#!/bin/bash # Script para reconstruir TubeScript-API desde cero set -e GREEN='\033[0;32m'; YELLOW='\033[1;33m'; RED='\033[0;31m'; NC='\033[0m' ok() { echo -e "${GREEN}✅ $1${NC}"; } warn() { echo -e "${YELLOW}⚠️ $1${NC}"; } err() { echo -e "${RED}❌ $1${NC}"; } echo "════════════════════════════════════════════════════════════" echo " 🔨 TubeScript-API — Rebuild completo" echo "════════════════════════════════════════════════════════════" echo "" # ── Verificar Docker (plugin compose, no docker-compose legacy) ────────────── if ! docker compose version &>/dev/null; then err "docker compose no está disponible. Instala Docker Desktop o el plugin compose." exit 1 fi ok "Docker compose disponible: $(docker compose version --short 2>/dev/null || echo 'ok')" echo "" # ── Carpeta data ────────────────────────────────────────────────────────────── mkdir -p ./data chmod 777 ./data 2>/dev/null || true ok "Carpeta ./data lista (permisos 777)" echo " Coloca cookies.txt en ./data/cookies.txt para autenticación" echo "" # ── Detener contenedores existentes ────────────────────────────────────────── echo "🛑 Deteniendo contenedores..." docker compose down --remove-orphans 2>/dev/null || true ok "Contenedores detenidos" echo "" # ── Eliminar imagen anterior para forzar build limpio ───────────────────────── echo "🧹 Eliminando imagen anterior (tubescript-api:latest)..." docker rmi tubescript-api:latest 2>/dev/null && ok "Imagen anterior eliminada" || warn "No había imagen previa" echo "" # ── Build sin caché ─────────────────────────────────────────────────────────── echo "🔨 Construyendo imagen desde cero (--no-cache)..." echo " Esto puede tardar 3-5 minutos la primera vez..." echo "" CACHEBUST=$(date +%s) docker compose build --no-cache ok "Imagen construida exitosamente" echo "" # ── Iniciar servicios ───────────────────────────────────────────────────────── echo "🚀 Iniciando servicios..." docker compose up -d ok "Servicios iniciados" echo "" # ── Esperar y mostrar estado ────────────────────────────────────────────────── echo "⏳ Esperando que la API arranque (15s)..." sleep 15 echo "" echo "📊 Estado de contenedores:" docker compose ps echo "" # ── Health check ────────────────────────────────────────────────────────────── echo "🩺 Verificando API..." if curl -sf http://localhost:8282/docs -o /dev/null; then ok "API respondiendo en http://localhost:8282" else warn "API aún no responde (puede necesitar más tiempo). Revisa: docker compose logs -f" fi echo "" echo "════════════════════════════════════════════════════════════" ok "¡Rebuild completado!" echo "════════════════════════════════════════════════════════════" echo "" echo " API: http://localhost:8282" echo " Docs: http://localhost:8282/docs" echo " Logs: docker compose logs -f" echo " Cookies: curl -X POST http://localhost:8282/upload_cookies -F 'file=@cookies.txt'" echo ""