-
Notifications
You must be signed in to change notification settings - Fork 1
Description
Descripción
Necesitamos implementar un sistema de despliegue para nuestra aplicación de sorteo que permita su fácil acceso a través de una URL pública. La aplicación está desarrollada con Streamlit y actualmente puede ejecutarse en contenedores Docker.
Estado actual
La aplicación cuenta con:
- Aplicación principal en Streamlit (
app.py) - Configuración para Docker (Dockerfile y docker-compose.yaml)
- Dependencias Python en requirements.txt
Limitación con GitHub Pages
GitHub Pages está diseñado principalmente para sitios web estáticos (HTML, CSS, JavaScript) y no soporta directamente aplicaciones Python/Streamlit que requieren un servidor backend funcionando. Por lo tanto, no es posible desplegar la aplicación directamente en GitHub Pages sin adaptaciones significativas.
Opciones de despliegue recomendadas
Opción 1: Streamlit Cloud (Recomendada)
Streamlit Cloud es una plataforma gratuita para desplegar aplicaciones Streamlit directamente desde repositorios de GitHub.
Pasos:
- Registrarse en Streamlit Cloud
- Conectar con la cuenta de GitHub
- Seleccionar el repositorio y la rama
- Configurar las dependencias (ya están en requirements.txt)
- Desplegar
Ventajas:
- Gratuito para uso personal/comunitario
- Integración directa con GitHub
- No requiere cambios en el código
- Soporte nativo para aplicaciones Streamlit
Opción 2: GitHub Actions + Heroku/Railway/Render
Usar GitHub Actions para el CI/CD y desplegar automáticamente en plataformas como Heroku, Railway o Render.
Pasos:
- Crear cuenta en la plataforma seleccionada
- Configurar GitHub Actions workflow (.github/workflows/deploy.yml)
- Configurar secrets para la autenticación
- El workflow desplegará la aplicación cuando se hagan cambios en la rama principal
Ventajas:
- Despliegue automático con cada push
- Varias opciones de hosting (algunas con tier gratuito)
Opción 3: Convertir a formato estático (Solución más compleja)
Si es absolutamente necesario usar GitHub Pages, podríamos:
- Crear una versión estática de la interfaz usando HTML/CSS/JS
- Implementar una función serverless para la lógica de sorteo
- Conectar la interfaz con la función serverless mediante API
Desventajas:
- Requiere reescribir gran parte de la aplicación
- Mayor complejidad de mantenimiento
- Funcionalidad posiblemente limitada
Tareas propuestas
- Evaluar y seleccionar la mejor opción de despliegue
- Implementar la configuración necesaria para el despliegue
- Documentar el proceso de despliegue en el README
- Configurar un dominio personalizado (opcional)
- Implementar CI/CD para actualizaciones automáticas