SIDEL_ScriptsManager/install-docker.sh

163 lines
6.2 KiB
Bash
Executable File

#!/bin/bash
# Script de instalación automatizada para SIDEL ScriptsManager Docker
# Este script automatiza todo el proceso de configuración inicial
set -e
# Colores para output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Banner
echo -e "${BLUE}"
echo "╔══════════════════════════════════════════════════════════════╗"
echo "║ SIDEL ScriptsManager Docker Setup ║"
echo "║ Instalación Automatizada ║"
echo "╚══════════════════════════════════════════════════════════════╝"
echo -e "${NC}"
# Verificar que estamos en el directorio correcto
if [ ! -f "Dockerfile" ] || [ ! -f "docker-compose.yml" ]; then
echo -e "${RED}Error: No se encontraron los archivos Docker necesarios${NC}"
echo "Asegúrate de estar en el directorio SIDELManagerScripts"
exit 1
fi
echo -e "${GREEN}✓ Archivos Docker encontrados${NC}"
# Verificar que Docker está disponible
if ! command -v docker &> /dev/null; then
echo -e "${RED}Error: Docker no está instalado o no está en el PATH${NC}"
echo "Instala Docker antes de continuar"
exit 1
fi
echo -e "${GREEN}✓ Docker disponible${NC}"
# Verificar que docker-compose está disponible
if command -v docker-compose &> /dev/null; then
DOCKER_COMPOSE="docker-compose"
elif docker compose version &> /dev/null; then
DOCKER_COMPOSE="docker compose"
else
echo -e "${RED}Error: docker-compose no está disponible${NC}"
exit 1
fi
echo -e "${GREEN}✓ Docker Compose disponible ($DOCKER_COMPOSE)${NC}"
# Dar permisos de ejecución a scripts
echo -e "${BLUE}Configurando permisos...${NC}"
chmod +x docker-manage.sh
chmod +x verify-environments.sh
if [ -f "install-docker.sh" ]; then
chmod +x install-docker.sh
fi
echo -e "${GREEN}✓ Permisos configurados${NC}"
# Crear archivo .env si no existe
if [ ! -f ".env" ]; then
echo -e "${BLUE}Creando archivo de configuración...${NC}"
cp .env.example .env
echo -e "${YELLOW}⚠️ Archivo .env creado desde .env.example${NC}"
echo -e "${YELLOW}⚠️ IMPORTANTE: Edita .env con tus configuraciones antes de usar en producción${NC}"
else
echo -e "${GREEN}✓ Archivo .env ya existe${NC}"
fi
# Crear directorios necesarios
echo -e "${BLUE}Creando estructura de directorios...${NC}"
mkdir -p data backup logs
mkdir -p data/script_groups/hammer data/script_groups/group_2 data/script_groups/group_3 data/script_groups/group_5
mkdir -p data/script_groups/logs
mkdir -p logs/executions logs/system logs/audit
echo -e "${GREEN}✓ Estructura de directorios creada${NC}"
# Preguntar al usuario qué hacer
echo ""
echo -e "${BLUE}¿Qué deseas hacer?${NC}"
echo "1) Solo preparar (no construir imagen ni iniciar)"
echo "2) Construir imagen Docker"
echo "3) Construir imagen e iniciar en producción"
echo "4) Construir imagen e iniciar en desarrollo"
echo "5) Instalación completa con verificación"
read -p "Selecciona una opción (1-5): " -r OPTION
case $OPTION in
1)
echo -e "${GREEN}✓ Preparación completada${NC}"
echo ""
echo "Próximos pasos:"
echo " ./docker-manage.sh build # Construir imagen"
echo " ./docker-manage.sh start # Iniciar producción"
;;
2)
echo -e "${BLUE}Construyendo imagen Docker...${NC}"
./docker-manage.sh build
echo -e "${GREEN}✓ Imagen construida exitosamente${NC}"
echo ""
echo "Para iniciar: ./docker-manage.sh start"
;;
3)
echo -e "${BLUE}Construyendo imagen e iniciando en producción...${NC}"
./docker-manage.sh build
./docker-manage.sh start
echo ""
echo -e "${GREEN}✓ SIDEL ScriptsManager iniciado en http://localhost:5002${NC}"
;;
4)
echo -e "${BLUE}Construyendo imagen e iniciando en desarrollo...${NC}"
./docker-manage.sh build
./docker-manage.sh start-dev
echo ""
echo -e "${GREEN}✓ SIDEL ScriptsManager (dev) iniciado en http://localhost:5003${NC}"
;;
5)
echo -e "${BLUE}Realizando instalación completa...${NC}"
# Construir imagen
echo -e "${BLUE}Paso 1/4: Construyendo imagen Docker...${NC}"
./docker-manage.sh build
# Iniciar aplicación
echo -e "${BLUE}Paso 2/4: Iniciando aplicación...${NC}"
./docker-manage.sh start
# Esperar un momento para que la aplicación se inicie
echo -e "${BLUE}Paso 3/4: Esperando que la aplicación se inicie...${NC}"
sleep 10
# Verificar instalación
echo -e "${BLUE}Paso 4/4: Verificando instalación...${NC}"
./verify-environments.sh
echo ""
echo -e "${GREEN}🎉 Instalación completa exitosa!${NC}"
echo -e "${GREEN}✓ SIDEL ScriptsManager disponible en http://localhost:5002${NC}"
;;
*)
echo -e "${RED}Opción inválida${NC}"
exit 1
;;
esac
echo ""
echo -e "${BLUE}═══════════════════════════════════════════════════════════════${NC}"
echo -e "${GREEN}Comandos útiles:${NC}"
echo -e " ${YELLOW}./docker-manage.sh status${NC} # Ver estado de contenedores"
echo -e " ${YELLOW}./docker-manage.sh logs${NC} # Ver logs de la aplicación"
echo -e " ${YELLOW}./docker-manage.sh shell${NC} # Acceder al contenedor"
echo -e " ${YELLOW}./docker-manage.sh stop${NC} # Detener la aplicación"
echo -e " ${YELLOW}./docker-manage.sh help${NC} # Ver todos los comandos disponibles"
echo ""
echo -e "${GREEN}Documentación:${NC}"
echo -e " ${YELLOW}README-Docker.md${NC} # Guía completa de Docker"
echo -e " ${YELLOW}MIGRATION-GUIDE.md${NC} # Guía de migración detallada"
echo -e " ${YELLOW}conda-environments.md${NC} # Información de entornos conda"
echo ""
echo -e "${BLUE}¡Instalación de SIDEL ScriptsManager Docker completada!${NC}"