7.1 KiB
7.1 KiB
Guía de Migración a Docker - SIDEL ScriptsManager
Resumen de la Configuración Creada
Se ha creado una configuración Docker completa para SIDEL ScriptsManager que incluye:
✅ Archivos Creados/Actualizados
- Dockerfile - Imagen base con dos entornos conda
- docker-compose.yml - Orquestación de servicios
- docker-manage.sh - Script de gestión completo
- verify-environments.sh - Script de verificación
- .env.example - Plantilla de variables de entorno
- .dockerignore - Exclusiones para construcción
- conda-environments.md - Documentación de entornos
🐍 Entornos Conda Configurados
Entorno Principal: scriptsmanager
- Python: 3.12
- Puerto: 5002
- Propósito: Frontend Flask (run_app.py)
- Dependencias: Flask, SocketIO, SQLAlchemy, Gunicorn
Entorno TSNet: tsnet
- Python: 3.12
- Puertos: 5200-5400 (dinámicos)
- Propósito: Scripts Water Hammer Simulator
- Dependencias: TSNet, WNTR, NumPy, Matplotlib, ReportLab
🔧 Próximos Pasos para Implementación
1. Preparación del Entorno
cd /home/miguefin/scriptmanager/SIDELManagerScripts
# Verificar que todos los archivos están presentes
ls -la | grep -E "(Dockerfile|docker-compose|docker-manage)"
# Dar permisos de ejecución (si no se hizo)
chmod +x docker-manage.sh verify-environments.sh
2. Configuración Inicial
# Crear archivo de entorno
cp .env.example .env
# Editar configuraciones específicas
nano .env
3. Construcción de la Imagen
# Construir la imagen Docker
./docker-manage.sh build
# Este proceso:
# - Instala miniconda como base
# - Crea entorno 'scriptsmanager' con Python 3.12
# - Instala dependencias del requirements.txt principal
# - Crea entorno 'tsnet' con Python 3.12
# - Instala dependencias específicas de TSNet
# - Configura estructura de directorios
4. Primera Ejecución
# Iniciar en modo producción
./docker-manage.sh start
# Verificar que todo funciona
./verify-environments.sh
🏗️ Arquitectura Implementada
Estructura de Directorios Docker
SIDELManagerScripts/
├── Dockerfile # ✅ Imagen con 2 entornos conda
├── docker-compose.yml # ✅ Servicios y volúmenes
├── docker-manage.sh # ✅ Script de gestión
├── verify-environments.sh # ✅ Verificación de entornos
├── .env.example # ✅ Variables de entorno
├── .dockerignore # ✅ Exclusiones
├── conda-environments.md # ✅ Documentación
└── README-Docker.md # ✅ Guía completa existente
Volúmenes Persistentes
./data/ → /app/data/ # Base de datos y datos de usuario
./backup/ → /app/backup/ # Backups automáticos
./logs/ → /app/logs/ # Logs de aplicación
./app/backend/ → /app/app/backend/ # Scripts (modo desarrollo)
Puertos Configurados
- 5002: Frontend principal (producción)
- 5003: Frontend desarrollo (perfil dev)
- 5200-5400: Rango para scripts TSNet dinámicos
- 5432: PostgreSQL (perfil opcional)
🔍 Verificaciones Post-Instalación
1. Verificar Entornos Conda
# Listar entornos disponibles
./docker-manage.sh envs
# Debería mostrar:
# scriptsmanager
# tsnet
2. Verificar Dependencias
# Ejecutar script de verificación completo
./verify-environments.sh
# Verificaciones que realiza:
# ✓ Contenedor ejecutándose
# ✓ Python 3.12 en ambos entornos
# ✓ Flask en scriptsmanager
# ✓ TSNet en entorno tsnet
# ✓ NumPy, Matplotlib, WNTR
# ✓ Conectividad del frontend
3. Verificar Aplicación
# Verificar salud de la aplicación
./docker-manage.sh health
# Acceder a la aplicación
curl http://localhost:5002
🛠️ Comandos de Gestión Disponibles
Gestión Principal
./docker-manage.sh build # Construir imagen
./docker-manage.sh start # Iniciar producción
./docker-manage.sh start-dev # Iniciar desarrollo
./docker-manage.sh stop # Detener contenedores
./docker-manage.sh restart # Reiniciar
./docker-manage.sh status # Estado actual
Monitoreo y Debug
./docker-manage.sh logs # Ver logs
./docker-manage.sh logs -f # Seguir logs en tiempo real
./docker-manage.sh shell # Acceder al contenedor
./docker-manage.sh envs # Listar entornos conda
./docker-manage.sh health # Verificar salud
Gestión de Datos
./docker-manage.sh backup # Backup manual
./docker-manage.sh init-admin # Crear admin (cuando esté implementado)
./docker-manage.sh init-db # Inicializar BD
🚨 Consideraciones Importantes
1. Compatibilidad con WSL
- La configuración está optimizada para Linux/WSL
- Funciona perfectamente en tu entorno WSL actual
- Los volúmenes se mapean correctamente al sistema de archivos WSL
2. Gestión de Puertos
- Puerto 5002 para el frontend (cambio desde el 5002 original de run_app.py)
- El ScriptsManager asignará puertos dinámicos 5200-5400 para scripts TSNet
- Configuración compatible con la arquitectura multiusuario
3. Persistencia de Datos
- Todos los datos de usuario se mantienen en
./data/
- Logs organizados por usuario en
./logs/
- Backups automáticos en
./backup/
4. Entornos Conda Isolados
scriptsmanager
: Solo dependencias del frontendtsnet
: Solo dependencias de simulación- Sin conflictos entre bibliotecas
🔧 Personalización Avanzada
Variables de Entorno Clave (.env)
# Configuración de la aplicación
DEBUG=false
SECRET_KEY=cambiar-en-produccion
# Base de datos
DATABASE_URL=sqlite:///app/data/scriptsmanager.db
# Gestión de puertos
PORT_RANGE_START=5200
PORT_RANGE_END=5400
# Entornos conda
CONDA_DEFAULT_ENV=scriptsmanager
TSNET_ENV=tsnet
Perfiles Docker Compose Disponibles
# Perfil por defecto (producción)
./docker-manage.sh start
# Perfil de desarrollo
./docker-manage.sh start-dev
# Con PostgreSQL (en lugar de SQLite)
docker-compose --profile postgres up -d
# Con backup automático diario
docker-compose --profile backup up -d
📋 Lista de Verificación Final
- Archivos Docker creados correctamente
- Permisos de ejecución configurados
- Archivo .env configurado
- Imagen Docker construida:
./docker-manage.sh build
- Aplicación iniciada:
./docker-manage.sh start
- Entornos verificados:
./verify-environments.sh
- Frontend accesible en http://localhost:5002
- Logs funcionando:
./docker-manage.sh logs
⚡ Comando de Inicio Rápido
Para usuarios experimentados, secuencia completa de inicio:
cd /home/miguefin/scriptmanager/SIDELManagerScripts
cp .env.example .env
./docker-manage.sh build
./docker-manage.sh start
./verify-environments.sh
🎯 Resultado Esperado:
- SIDEL ScriptsManager ejecutándose en http://localhost:5002
- Dos entornos conda funcionales (scriptsmanager, tsnet)
- Gestión completa a través de
./docker-manage.sh
- Datos persistentes en volúmenes Docker