TubeScript-API/test-and-rebuild.sh

123 lines
3.5 KiB
Bash

#!/bin/bash
# ================================================================
# Script de Prueba y Reconstrucción para TubeScript API
# ================================================================
set -e
echo "🔧 TubeScript API - Prueba y Reconstrucción"
echo "=============================================="
echo ""
# Colores
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# 1. Detener todo
echo "🛑 Paso 1: Deteniendo servicios actuales..."
docker-compose down 2>/dev/null || docker stop $(docker ps -aq) 2>/dev/null || true
docker rm $(docker ps -aq) 2>/dev/null || true
echo -e "${GREEN}✅ Servicios detenidos${NC}"
echo ""
# 2. Limpiar imágenes viejas
echo "🧹 Paso 2: Limpiando imágenes antiguas..."
docker rmi tubescript-api 2>/dev/null || true
echo -e "${GREEN}✅ Limpieza completada${NC}"
echo ""
# 3. Reconstruir
echo "🏗️ Paso 3: Reconstruyendo imagen..."
echo " (Esto puede tomar 3-5 minutos)"
docker-compose build --no-cache tubescript-api
if [ $? -eq 0 ]; then
echo -e "${GREEN}✅ Build completado exitosamente${NC}"
else
echo -e "${RED}❌ Error en el build${NC}"
exit 1
fi
echo ""
# 4. Iniciar servicio
echo "🚀 Paso 4: Iniciando servicio..."
docker-compose up -d tubescript-api
if [ $? -eq 0 ]; then
echo -e "${GREEN}✅ Servicio iniciado${NC}"
else
echo -e "${RED}❌ Error al iniciar${NC}"
exit 1
fi
echo ""
# 5. Esperar inicialización
echo "⏳ Paso 5: Esperando inicialización (15 segundos)..."
for i in {15..1}; do
echo -n "$i... "
sleep 1
done
echo ""
echo ""
# 6. Verificar que está corriendo
echo "🔍 Paso 6: Verificando estado..."
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}" | grep tubescript_api
if [ $? -eq 0 ]; then
echo -e "${GREEN}✅ Contenedor corriendo${NC}"
else
echo -e "${RED}❌ Contenedor NO está corriendo${NC}"
echo "Ver logs:"
docker logs tubescript_api 2>&1 | tail -50
exit 1
fi
echo ""
# 7. Probar endpoint de health
echo "🏥 Paso 7: Probando endpoint de health..."
curl -s http://localhost:8080/docs > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo -e "${GREEN}✅ API respondiendo${NC}"
else
echo -e "${YELLOW}⚠️ API aún no responde (puede necesitar más tiempo)${NC}"
fi
echo ""
# 8. Probar el endpoint problemático
echo "🧪 Paso 8: Probando endpoint de transcripción..."
echo " Video ID: 6hini9Xz_fc"
echo ""
RESPONSE=$(curl -s -w "\n%{http_code}" "http://localhost:8080/transcript/6hini9Xz_fc?lang=es" 2>&1)
HTTP_CODE=$(echo "$RESPONSE" | tail -n1)
BODY=$(echo "$RESPONSE" | head -n-1)
if [ "$HTTP_CODE" = "200" ]; then
echo -e "${GREEN}✅ ¡ÉXITO! El endpoint funciona correctamente${NC}"
echo ""
echo "Respuesta:"
echo "$BODY" | python3 -m json.tool 2>/dev/null || echo "$BODY"
elif [ "$HTTP_CODE" = "400" ]; then
echo -e "${RED}❌ Error 400 - El problema persiste${NC}"
echo ""
echo "Respuesta de error:"
echo "$BODY" | python3 -m json.tool 2>/dev/null || echo "$BODY"
echo ""
echo "📋 Ver logs del contenedor:"
echo " docker logs tubescript_api"
else
echo -e "${YELLOW}⚠️ HTTP $HTTP_CODE - Respuesta inesperada${NC}"
echo ""
echo "$BODY"
fi
echo ""
echo "=============================================="
echo "🔍 Comandos útiles:"
echo " Ver logs: docker logs -f tubescript_api"
echo " Entrar: docker exec -it tubescript_api bash"
echo " Detener: docker-compose down"
echo " Reiniciar: docker-compose restart tubescript-api"
echo "=============================================="