163 lines
6.2 KiB
Bash
Executable File
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}" |