Esta guía detalla cómo desplegar el Sistema de Gestión de Comedor Escolar en Dockploy.
Asegúrate de tener todos estos archivos en tu repositorio:
📦 proyecto/
├── 📄 Dockerfile
├── 📄 docker-compose.yml
├── 📄 docker-requirements.txt
├── 📄 .dockerignore
├── 📄 .env.example
├── 📄 start.sh
├── 📄 app.py
├── 📄 database.py
├── 📄 routes.py
├── 📄 models.py
├── 📄 main.py
├── 📁 templates/
│ ├── base.html
│ ├── dashboard.html
│ ├── login.html
│ ├── class_detail.html
│ ├── confirmados.html
│ ├── ausentes.html
│ ├── pendientes.html
│ ├── students.html
│ ├── teachers.html
│ └── classes.html
└── 📁 static/
└── css/
└── styles.css
IMPORTANTE: Antes de desplegar, genera una clave secreta única:
python3 -c "import secrets; print(secrets.token_hex(32))"Guarda este valor, lo necesitarás para configurar las variables de entorno.
- Accede a tu panel de Dockploy
- Click en "New Service" o "Nuevo Servicio"
- Selecciona "Docker Compose"
Copia el contenido completo de docker-compose.yml en el editor de Dockploy.
Añade estas variables de entorno en Dockploy:
SESSION_SECRET=tu-clave-generada-de-64-caracteres-aqui
FLASK_ENV=production
DATABASE_PATH=/app/data/cafeteria.db
TZ=Europe/Madrid
WORKERS=4
TIMEOUT=120
PORT=5000En Dockploy, asegúrate de que el volumen cafeteria-data está configurado como persistente.
- Click en "Deploy" o "Desplegar"
- Espera a que el contenedor se construya e inicie
- Verifica que el estado sea "Running"
- En la configuración del servicio, añade tu dominio
- Dockploy configurará automáticamente HTTPS con Let's Encrypt
- En Dockploy, selecciona "Dockerfile"
- Conecta tu repositorio Git o sube los archivos
Build Context: .
Dockerfile Path: ./Dockerfile
Mismas que en Método 1 (ver arriba).
Puerto Interno: 5000
Puerto Externo: 80 (o el que prefieras)
Crear volumen persistente:
/app/data → volumen persistente para base de datos
docker ps | grep cafeteriaDeberías ver el contenedor con status "Up" y healthy.
En Dockploy:
- Ve a la sección de Logs
- Deberías ver: "Iniciando servidor con Gunicorn..."
- No debe haber errores rojos
Visita: http://tu-dominio.com o http://tu-ip:5000
Deberías ver la página de login.
- Importa un archivo CSV con datos iniciales, o
- Accede a la gestión de profesores para crear el primer usuario
SESSION_SECRET=<clave-aleatoria-64-caracteres> # ¡OBLIGATORIO!FLASK_ENV=production
TZ=Europe/Madrid
WORKERS=4
TIMEOUT=120Dockploy gestiona automáticamente los permisos, pero puedes verificar:
docker exec <container-id> ls -la /app/dataEl contenedor incluye healthcheck. En Dockploy verás:
- 🟢 Verde = Saludable
- 🔴 Rojo = Problema
En Dockploy:
- Selecciona tu servicio
- Click en "Logs" o "Registros"
- Activa "Live logs" para ver en tiempo real
Dockploy muestra:
- Uso de CPU
- Uso de RAM
- Uso de disco
- Tráfico de red
Si conectaste un repositorio:
- Haz push de los cambios a tu repo
- En Dockploy, click en "Redeploy"
- Espera la reconstrucción
- Sube nuevos archivos a Dockploy
- Click en "Rebuild"
- Verifica que no haya errores en los logs
Síntomas: Estado "Exited" o "Error"
Solución:
- Revisa logs en Dockploy
- Verifica que SESSION_SECRET esté configurado
- Comprueba que el puerto 5000 esté disponible
Síntomas: "Database is locked" o errores de SQLite
Solución:
# Reiniciar contenedor
En Dockploy: Click en "Restart"Síntomas: Los datos desaparecen al reiniciar
Solución:
- Verifica que el volumen
/app/dataesté configurado como persistente - En Dockploy, ve a Volumes y confirma que existe
cafeteria-data
Síntomas: "Address already in use"
Solución:
- Cambia el puerto externo en Dockploy
- O detén el servicio que está usando el puerto 5000
Solución:
- Verifica que las variables estén en la sección correcta de Dockploy
- Después de cambiar variables, haz "Restart" del contenedor
Opción 1: Via Dockploy
- Ve a Volumes
- Busca
cafeteria-data - Click en "Backup"
Opción 2: Via Docker
docker cp <container-name>:/app/data/cafeteria.db ./backup-$(date +%Y%m%d).dbdocker cp ./backup.db <container-name>:/app/data/cafeteria.db
docker restart <container-name>Dockploy configura automáticamente HTTPS si:
- Tienes un dominio configurado
- El dominio apunta a tu servidor
- El puerto 80 y 443 están abiertos
No necesitas configurar certificados manualmente.
- En variables de entorno, cambia:
WORKERS=8 - Reinicia el contenedor
Recomendación: WORKERS = (2 × núcleos_CPU) + 1
En Dockploy puedes configurar:
- CPU: 0.5 - 2.0 cores
- RAM: 512MB - 2GB
- Disco: 5GB - 20GB
- Siempre usa SESSION_SECRET aleatorio único por instalación
- Backups automáticos configurados en Dockploy
- Monitoreo activo de logs y métricas
- Actualizaciones regulares del código
- Variables de entorno nunca en el código
Si tienes problemas:
- Revisa logs primero
- Verifica variables de entorno
- Comprueba el healthcheck
- Revisa la documentación de Dockploy
Una vez desplegado, el sistema incluye:
- ✅ Dashboard con estadísticas en tiempo real
- ✅ Gestión de estudiantes, clases y profesores
- ✅ Control de asistencia diaria al comedor
- ✅ Importación/Exportación CSV (formato PARTEGEN)
- ✅ Validación de comensales
- ✅ Reportes de confirmados, ausentes y pendientes
- ✅ Autenticación segura de profesores
- ✅ Interfaz responsive (móvil y desktop)
Tu sistema de gestión de comedor está listo para usar. Accede a tu dominio y comienza a gestionar la asistencia de tus estudiantes.