126 lines
4.0 KiB
Bash
Executable File
126 lines
4.0 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Script para reconstruir las imágenes Docker de TubeScript
|
|
|
|
set -e
|
|
|
|
echo "════════════════════════════════════════════════════════════"
|
|
echo " 🔨 TubeScript-API - Rebuild de Docker"
|
|
echo "════════════════════════════════════════════════════════════"
|
|
echo ""
|
|
|
|
# Colores
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
RED='\033[0;31m'
|
|
NC='\033[0m'
|
|
|
|
print_success() {
|
|
echo -e "${GREEN}✅ $1${NC}"
|
|
}
|
|
|
|
print_warning() {
|
|
echo -e "${YELLOW}⚠️ $1${NC}"
|
|
}
|
|
|
|
print_error() {
|
|
echo -e "${RED}❌ $1${NC}"
|
|
}
|
|
|
|
# Verificar Docker
|
|
echo "🔍 Verificando Docker..."
|
|
if ! command -v docker &> /dev/null; then
|
|
print_error "Docker no está instalado"
|
|
exit 1
|
|
fi
|
|
|
|
if ! command -v docker-compose &> /dev/null; then
|
|
print_error "Docker Compose no está instalado"
|
|
exit 1
|
|
fi
|
|
|
|
print_success "Docker encontrado"
|
|
echo ""
|
|
|
|
# Asegurar carpeta data para montajes de configuración
|
|
echo "📁 Asegurando carpeta './data' para montaje de configuración..."
|
|
if [ ! -d "./data" ]; then
|
|
mkdir -p ./data
|
|
chmod 755 ./data || true
|
|
print_success "Carpeta ./data creada"
|
|
else
|
|
print_success "Carpeta ./data ya existe"
|
|
fi
|
|
echo "Nota: coloca aquí archivos persistentes como stream_config.json, streams_state.json y cookies.txt (ej: ./data/cookies.txt)"
|
|
echo ""
|
|
|
|
# Detener contenedores
|
|
echo "🛑 Deteniendo contenedores existentes..."
|
|
docker compose down 2>/dev/null || true
|
|
print_success "Contenedores detenidos"
|
|
echo ""
|
|
|
|
# Limpiar imágenes antiguas (opcional)
|
|
echo "🧹 ¿Deseas eliminar las imágenes antiguas? (s/N)"
|
|
read -p "> " clean_images
|
|
if [ "$clean_images" = "s" ] || [ "$clean_images" = "S" ]; then
|
|
echo "Eliminando imágenes antiguas..."
|
|
docker compose down --rmi all 2>/dev/null || true
|
|
print_success "Imágenes antiguas eliminadas"
|
|
fi
|
|
echo ""
|
|
|
|
# Reconstruir con CACHEBUST para invalidar solo la capa COPY . /app
|
|
# CACHEBUST=$(date +%s) se exporta para que docker-compose.yml lo tome via ${CACHEBUST:-1}
|
|
echo "🔨 Reconstruyendo imagen con código actualizado..."
|
|
echo "Usando CACHEBUST=$(date +%s) para forzar copia fresca del código..."
|
|
echo ""
|
|
|
|
export CACHEBUST="$(date +%s)"
|
|
docker compose build
|
|
|
|
if [ $? -eq 0 ]; then
|
|
print_success "Imagen reconstruida exitosamente"
|
|
else
|
|
print_error "Error al reconstruir imagen"
|
|
exit 1
|
|
fi
|
|
echo ""
|
|
|
|
# Preguntar si desea iniciar
|
|
echo "🚀 ¿Deseas iniciar los servicios ahora? (S/n)"
|
|
read -p "> " start_services
|
|
if [ "$start_services" != "n" ] && [ "$start_services" != "N" ]; then
|
|
echo ""
|
|
echo "🚀 Iniciando servicios..."
|
|
docker compose up -d
|
|
|
|
if [ $? -eq 0 ]; then
|
|
print_success "Servicios iniciados"
|
|
echo ""
|
|
echo "📊 Estado de los servicios:"
|
|
sleep 3
|
|
docker compose ps
|
|
echo ""
|
|
echo "════════════════════════════════════════════════════════════"
|
|
print_success "¡Rebuild completado!"
|
|
echo "════════════════════════════════════════════════════════════"
|
|
echo ""
|
|
echo "🌐 Servicios disponibles:"
|
|
echo " API: http://localhost:8282"
|
|
echo " Docs API: http://localhost:8282/docs"
|
|
echo ""
|
|
else
|
|
print_error "Error al iniciar servicios"
|
|
exit 1
|
|
fi
|
|
else
|
|
echo ""
|
|
print_success "Rebuild completado (servicios no iniciados)"
|
|
echo ""
|
|
echo "Para iniciar los servicios:"
|
|
echo " CACHEBUST=\$(date +%s) docker compose up -d --build"
|
|
fi
|
|
|
|
echo "════════════════════════════════════════════════════════════"
|