254 lines
7.1 KiB
Markdown
254 lines
7.1 KiB
Markdown
# 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
|
|
|
|
1. **Dockerfile** - Imagen base con dos entornos conda
|
|
2. **docker-compose.yml** - Orquestación de servicios
|
|
3. **docker-manage.sh** - Script de gestión completo
|
|
4. **verify-environments.sh** - Script de verificación
|
|
5. **.env.example** - Plantilla de variables de entorno
|
|
6. **.dockerignore** - Exclusiones para construcción
|
|
7. **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
|
|
```bash
|
|
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
|
|
```bash
|
|
# Crear archivo de entorno
|
|
cp .env.example .env
|
|
|
|
# Editar configuraciones específicas
|
|
nano .env
|
|
```
|
|
|
|
### 3. Construcción de la Imagen
|
|
```bash
|
|
# 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
|
|
```bash
|
|
# 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
|
|
```bash
|
|
# Listar entornos disponibles
|
|
./docker-manage.sh envs
|
|
|
|
# Debería mostrar:
|
|
# scriptsmanager
|
|
# tsnet
|
|
```
|
|
|
|
### 2. Verificar Dependencias
|
|
```bash
|
|
# 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
|
|
```bash
|
|
# 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
|
|
```bash
|
|
./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
|
|
```bash
|
|
./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
|
|
```bash
|
|
./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 frontend
|
|
- `tsnet`: Solo dependencias de simulación
|
|
- Sin conflictos entre bibliotecas
|
|
|
|
## 🔧 Personalización Avanzada
|
|
|
|
### Variables de Entorno Clave (.env)
|
|
```bash
|
|
# 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
|
|
```bash
|
|
# 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:
|
|
|
|
```bash
|
|
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 |