Despliegue en producción

Hay 4 componentes

  • Aplicación web (wsgi)

  • Base de datos Postgresql

  • Demonios (scheduler, consolidador, importador de actas desde email)

  • Archivos estáticos de la aplicacion y subidos por los usuarios

Despliege a Digital Ocean

Ingresar a Digital Ocean y habilitar la integración con Github para el repositorio y branch que corresponda.

Spaces

Crear una nueva instancia:

  • Seleccionar la región (ej. San Francisco 3)

  • Habilitar CDN

  • Dejar restringido File Listing

  • Elegir nombre único

  • Seleccionar el proyecto

Ir a la configuración del Space y editar la sección de CORS para aceptar solicitudes desde el dominio de la aplicación

Database

Crear un cluster de base de datos:

  • Seleccionar la base de datos (Postgres 12)

  • Seleccionar la configuración del cluster: Basic nodes, 1GB RAM / 1vCPU / 10GB HD

  • Seleccionar la región (ej. nyc)

Una vez que se termina de aprovisionar el cluster. Ir a Users & Databases y crear el usuario y base de datos escrutinio-social.

App Platform

Setup

doctl auth init --context <name>
doctl auth switch --context <name>

curl -L https://github.com/ko1nksm/shdotenv/releases/latest/download/shdotenv --output /usr/local/bin/shdotenv
chmod +x /usr/local/bin/shdotenv

Crear un archivo .env-deploy y definir las siguientes variables:

AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_STORAGE_BUCKET_NAME=
AWS_S3_ENDPOINT_URL=
DB_CLUSTER_NAME=
APP_REGION=
APP_DOMAIN=
APP_NAME=
DJANGO_SECRET_KEY=
GUNICORN_WORKERS=
GITHUB_REPO=
BRANCH_NAME=
IMAPS_CONFIG=

Test

Para inspeccionar la especificación luego del reemplazo de variables de entorno:

make test-app-platform-spec

Create

Para hacer el despliegue por primera vez:

make create-app-platform-deploy

Update

Para aplicar una actualización de la especificación, obtener el ID de la aplicación:

doctl apps list

luego, reemplazando el <app-id> con el valor que corresponda:

make update-app-platform-deploy app-id=<app-id>