#!/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}"