En esta entrada quiero compartir los pasos que sigo para hacer Deployment o poner una aplicación de Dash en internet. Recordemos que Dash está hecho sobre Flask, entonces es como si subieramos un proyecto Flask (sin base de datos) usando Railway.
1. Pasos previos.
Ajustes en archivo app.py
Poner el código:
server = app.server
Debajo de:
app = dash.Dash(__name__)
server = app.server
Y poner el debug = False, ya que debug = True es cuando estamos en local, haciendo pruebas.
if __name__ == '__main__':
app.run_server(debug=False)
1.1 Cuenta en Railway.
Antes de subir la aplicación a la web, debemos tener ya una cuenta en Railway. Railway es una plataforma de hosting que facilita el poner proyectos en internet, se puede conectar a tu cuenta de GitHub para tomar de ahí el código y archivos de la aplicación web y hacer el deploy.
1.2 Cuenta en GitHub.
También debes tener cuenta en GitHub, tener un repositorio donde tengas todos los archivos del proyecto web.
2. Creación de archivos.
Una vez que el proyecto está completo y funcional, debemos crear los siguientes archivos en la carpeta raíz:
2.1 Procfile
Procfile (sin extension), y que contenga:
Procfile
web: gunicorn app:server
2.2 Requirements.txt
Crear archivo en raíz que se llame: requirements.txt
Aquí deben estar las librerias que tenemos instaladas en el proyecto (entorno virtual), si no las conocemos, las podemos conocer ejecutando pip list en la consola, y copiar y pegar. Por ejemplo debe quedar en este formato:
dash==2.10.2
Nota: asegurar que tienes instalado la librería gunicorn. Para saber si está instalado, poner:
gunicorn –version
SI no está instalado, entonces instalarlo con: pip install gunicorn
Y luego agregarlo en archivo requirements.txt
2.3 Runtime.txt
Crear archivo en raiz que se llame runtime.txt y poner ahi la version de python; para saber que version tenemos en nuestro proyecto, podemos poner en consola (con el ambiente virtual activado):
python --version
entonces a mi me sale por ejemplo
Python 3.11.1
pero en el txt hay que poner
python-3.11.1 (con minúscula y con un guión)
3. Commit.
Hacemos commit para tener actualizado todo en el repositorio github (asegurar que haces commit al repositorio correcto).
Recuerda activar el entorno virtual en que estés trabajando. Por ejemplo mi entorno virtual generalmente le pongo: venv … entonces para activarlo:
.\venv\Scripts\activate
Pasos para hacer el commit:
git add .
git commit -m "tu mensaje personalizado"
git push -u origin master
4. Railway.
Ir a railway.app, dar click en Nuevo proyecto, Seleccionar repositorio de github que queremos conectar. Y automáticamente Railway hará el despliegue o Deployment. En la seccion settings puedes configurar el nombre de la app, o un dominio externo. En caso de que haya algún error, en la sección de Deployment – logs, puedes revisar qué error te marca.
Y listo, ya tienes tu aplicación web en línea. Yo personalmente he subido proyectos de Dash, Plotly, Python y hasta la fecha han funcionado bastante bien. Cuando tengo errores, es porque me faltó algún paso de los descritos en este blog.
5. Ejemplo
Te comparto que en insadisa desarrollamos y comercializamos el Software ABBA insadisa para Monitoreo y Evaluación de Programas Presupuestarios, y derivado de este tema, hicimos un proyecto que permite visualizar la información presupuestal e información de avances físicos financieros de los programas presupuestarios, y este tablero lo publicamos usando los pasos descritos.
Si deseas conocer más el Software abba insadisa para Monitoreo y evaluación de programas presupuestarios y sus módulos:
Módulos:
🌳Árbol de problemas y objetivos.
🔲 Matriz de indicadores para resultados.
⏩ Captura de avances mensuales.
📊 Reportes gráficos
🔍 Reporte de transparencia y cuenta pública.
Te invito a visitar insadisa.com
Comment on “Deployment de un proyecto Dash, Plotly, Python”