Desplegar Django en Fly.io
Desplegar una aplicación de Django en Fly.io es un proceso relativamente sencillo, pero requiere seguir varios pasos clave para configurar tanto la aplicación como la infraestructura en Fly.io. Fly.io es una plataforma que permite desplegar aplicaciones globalmente, ofreciendo facilidad para escalar y administrar aplicaciones en contenedores Docker.
Preparar la aplicación Django
De forma predeterminada, Django está configurado para el desarrollo local.
BASE_URL
yALLOWED_HOSTS
: Agregar los dominios donde estará desplegada la aplicación.BASE_DIR
: Verifica que las rutas y archivos estáticos estén bien configurado.
APP_NAME = os.environ.get("FLY_APP_NAME")
ALLOWED_HOSTS = [f"{APP_NAME}.fly.dev"]
En segundo lugar, instalar Gunicorn como nuestro servidor de producción:
pip install gunicorn
pipenv install gunicorn
En tercer lugar, creamos el archivo requirements.txt para que enumere todos los paquetes en el entorno virtual de Python:
pip freeze > requirements.txt
pipenv requirements > requirements.txt
Hasta aquí, estamos listos para comenzar la implemtación en Fly.io
Configurar e implementar la aplicación en Fly
Para configurar e iniciar la aplicación, ejecutamos el comando fly launch
y seguimos las instrucciones del asistente:
- Nombre para la aplicación: establece el nombre que tendrá la aplicación en Fly.io
- Región principal: la región donde actuan los servidores, es detectado automáticamente en la mayoría de los casos.
Esto crea dos nuevos archivos en el proyecto que se configuran automáticamente en un archivo
- Archivos estáticos y de media: Los archivos estáticos y de media, debemos asegurarnos de configurarlos para que se sirvan correctamente en producción, usando servicios como
whitenoise
para servir los archivos estáticos de manera eficiente.
pip install whitenoise
pipenv install whitenoise
pip install psycopg-binary
pipenv install psycopg-binary
Finalmente para implementar la aplicación utilizamos el siguiente comando:
fly deploy
Esto tardará unos segundos o minutos mientras carga la aplicación:
Validating ~/project-django/fly.toml
✓ Configuration is valid
--> Verified app config
==> Building image
==> Building image with Depot
--> build: ()
[+] Building 16.4s (14/15)