8.9 KiB
8.9 KiB
SIDEL ScriptsManager - Docker Setup
Sistema de gestión de scripts multiusuario con entornos conda aislados, desarrollado para SIDEL.
🏗️ Arquitectura del Sistema
Componentes Principales
- Frontend Flask: Puerto 5002 (entorno
scriptsmanager
) - Scripts TSNet: Puertos 5200-5400 (entorno
tsnet
) - Base de datos: SQLite con esquema multiusuario completo
- Persistencia: Volúmenes Docker para datos, logs y backups
Entornos Conda
Entorno | Propósito | Puerto | Dependencias Principales |
---|---|---|---|
scriptsmanager |
Frontend Flask multiusuario | 5002 | Flask 3.0+, SQLAlchemy, SocketIO |
tsnet |
Water Hammer Simulator | 5200-5400 | TSNet, WNTR, NumPy, Matplotlib |
🚀 Inicio Rápido
1. Construcción e Inicio
# Dar permisos de ejecución
chmod +x docker-manage.sh
# Construir la imagen
./docker-manage.sh build
# Inicializar base de datos
./docker-manage.sh init-db
# Iniciar en producción
./docker-manage.sh start
Acceso: http://localhost:5002
Credenciales por defecto:
- Usuario:
admin
- Contraseña:
admin123
⚠️ IMPORTANTE: Cambiar estas credenciales en producción.
2. Desarrollo
# Iniciar en modo desarrollo
./docker-manage.sh start-dev
Acceso desarrollo: http://localhost:5003
📋 Comandos Principales
Gestión de Contenedores
# Construcción e inicio
./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 principal
# Estado y monitoreo
./docker-manage.sh status # Estado de contenedores
./docker-manage.sh health # Verificar salud de la app
./docker-manage.sh verify # Verificación completa
./docker-manage.sh ports # Estado de puertos
Gestión de Datos
# Base de datos
./docker-manage.sh init-db # Inicializar BD SIDEL
./docker-manage.sh backup # Backup manual
./docker-manage.sh users # Gestión de usuarios
# Logs y depuración
./docker-manage.sh logs # Logs de producción
./docker-manage.sh logs-dev # Logs de desarrollo
./docker-manage.sh shell # Shell en contenedor
./docker-manage.sh envs # Listar entornos conda
Servicios Adicionales
# Servicios opcionales
./docker-manage.sh start-backup # Backup automático diario
./docker-manage.sh start-monitoring # Monitoreo de logs
# Limpieza y mantenimiento
./docker-manage.sh clean # Limpiar imágenes no usadas
./docker-manage.sh reset # Reset completo (¡PELIGROSO!)
📁 Estructura de Datos
Directorios Principales
📁 data/
├── 📁 script_groups/ # Datos por usuario/proyecto
│ ├── 📁 group_hammer/
│ │ ├── 📁 user_1/
│ │ │ ├── 📁 project_default/
│ │ │ └── 📁 project_simulation_a/
│ │ └── 📁 user_2/
│ └── 📁 group_analytics/
├── 📄 scriptsmanager.db # Base de datos SQLite
└── 📁 system/ # Configuración del sistema
📁 logs/
├── 📁 executions/ # Logs de ejecución por usuario
├── 📁 system/ # Logs del sistema
└── 📁 audit/ # Logs de auditoría
📁 backup/
└── 📁 daily/ # Backups automáticos diarios
📁 app/backend/script_groups/ # Scripts del sistema
├── 📁 hammer/ # Scripts TSNet
├── 📁 data_processing/ # Scripts de análisis
└── 📁 system_utilities/ # Utilidades de sistema
🔧 Configuración
Variables de Entorno
Archivo .env
(copia desde .env.example
):
# Aplicación
DEBUG=false
SECRET_KEY=tu-clave-secreta-de-produccion
DATABASE_URL=sqlite:///app/data/scriptsmanager.db
# Multiusuario
BASE_DATA_PATH=/app/data
MAX_PROJECTS_PER_USER=50
PORT_RANGE_START=5200
PORT_RANGE_END=5400
# Internacionalización
DEFAULT_LANGUAGE=en
SUPPORTED_LANGUAGES=en,es,it,fr
DEFAULT_THEME=light
# SIDEL Branding
SIDEL_LOGO_PATH=/app/app/static/images/SIDEL.png
CORPORATE_BRANDING=true
# Backup
BACKUP_ENABLED=true
Docker Compose Profiles
# Desarrollo con hot-reload
docker-compose --profile dev up -d
# Backup automático
docker-compose --profile backup up -d
# Monitoreo de logs
docker-compose --profile monitoring up -d
# Todos los servicios
docker-compose --profile dev --profile backup --profile monitoring up -d
👥 Gestión de Usuarios
Niveles de Usuario
Nivel | Permisos | Descripción |
---|---|---|
admin |
Completos | Gestión total del sistema |
developer |
Desarrollo | Edición de metadatos y scripts |
operator |
Operación | Ejecución de scripts de producción |
viewer |
Solo lectura | Consulta de logs y documentación |
Crear Usuarios
# Acceder al shell del contenedor
./docker-manage.sh shell
# Crear usuario administrador
python scripts/create_admin.py --username miusuario --password mipassword --email mi@email.com
# Crear usuario operador
python scripts/create_user.py --username operador1 --password pass123 --level operator
# Listar usuarios
python scripts/list_users.py
🔍 Verificación y Depuración
Verificación Completa
./docker-manage.sh verify
Esto verifica:
- ✅ Estructura de directorios correcta
- ✅ Entornos conda funcionando
- ✅ Dependencias instaladas
- ✅ Puertos accesibles
- ✅ Base de datos inicializada
Depuración Común
Error: "app/backend/script_groups not found"
# Crear estructura correcta
mkdir -p app/backend/script_groups/hammer
mkdir -p app/backend/script_groups/data_processing
mkdir -p app/backend/script_groups/system_utilities
# Verificar que NO exista backend/script_groups/
ls -la backend/ # No debería existir
Error: "Port 5002 already in use"
# Verificar puertos en uso
./docker-manage.sh ports
# Detener otros servicios
./docker-manage.sh stop
sudo lsof -ti:5002 | xargs kill -9 # Solo si es necesario
Error: "Conda environment not found"
# Verificar entornos en contenedor
./docker-manage.sh shell
conda env list
conda activate scriptsmanager
conda activate tsnet
📊 Monitoreo y Logs
Logs en Tiempo Real
# Logs de producción
./docker-manage.sh logs -f
# Logs de desarrollo
./docker-manage.sh logs-dev -f
# Logs de servicios específicos
docker-compose logs -f backup
docker-compose logs -f log-monitor
Acceso a Logs de Usuario
Los logs de ejecución están disponibles en la interfaz web:
- URL: http://localhost:5002/logs
- Filtros: Por usuario, script, proyecto, fecha
- Tiempo Real: WebSocket para actualizaciones en vivo
- Exportación: Descarga en varios formatos
🔄 Backup y Recuperación
Backup Automático
# Activar servicio de backup
./docker-manage.sh start-backup
# El backup se ejecuta diariamente y guarda:
# - Base de datos SQLite completa
# - Todos los datos de usuario
# - Configuraciones del sistema
Backup Manual
# Backup inmediato
./docker-manage.sh backup
# Los backups se guardan en:
# backup/daily/data_backup_YYYYMMDD_HHMMSS.tar.gz
Recuperación
# 1. Detener servicios
./docker-manage.sh stop
# 2. Restaurar desde backup
cd backup/daily/
tar -xzf data_backup_YYYYMMDD_HHMMSS.tar.gz -C ../../
# 3. Reiniciar servicios
./docker-manage.sh start
🚨 Troubleshooting
Problemas Comunes
-
Contenedor no inicia
./docker-manage.sh verify docker-compose logs scriptsmanager
-
Base de datos corrupta
./docker-manage.sh stop cp data/scriptsmanager.db data/scriptsmanager.db.backup ./docker-manage.sh init-db ./docker-manage.sh start
-
Permisos de archivos
sudo chown -R $USER:$USER data/ logs/ backup/ chmod -R 755 data/ logs/ backup/
-
Reset completo (⚠️ Borra todos los datos)
./docker-manage.sh reset
Obtener Ayuda
# Ver todos los comandos disponibles
./docker-manage.sh help
# Verificar configuración
./docker-manage.sh verify
# Estado del sistema
./docker-manage.sh status
📄 Documentación Adicional
- Especificaciones:
.doc/Application_Specification.md
- Entornos Conda:
conda-environments.yml
- Configuración:
.env.example
- API: Documentación en la aplicación web
SIDEL ScriptsManager - Sistema de gestión de scripts multiusuario con Docker y conda
Versión: 1.0.0 | Soporte: Issues