Backend stack con Flask, Docker, Postgres, PgAdmin, Swagger.
Backend stack preconfigurado utilizando como herramientas principales: Python, Flask, Docker, Docker Compose, Postgres, PgAdmin, Swagger.
El servicio principal del proyecto (flask-app) está configurado en base a la imagen de Docker: tiangolo/uwsgi-nginx-flask y la estructura general del backend tiene como referencia al proyecto: tiangolo/full-stack.
Docker y Docker Compose son esenciales para ejecutar el backend.
Nota: Antes de ejecutar cualquier comando de Docker Compose asegúrate de estar ubicado en el directorio principal del proyecto.
hosts
local, modifica la IP 127.0.0.1
(tu localhost
) a dev.api.backend-stack.com
. El archivo docker-compose.override.yml
utiliza ese dominio para desplegar la documentación en Suagger-UI.
127.0.0.1 dev.api.backend-stack.com
…eso hará que tu navegador ejecute la app en ese dominio de manera local.
docker-compose up -d
docker-compose exec flask-app bash
Nota: Sólo en la primera ejecución del proyecto debes ejecutar:
alembic upgrade head
… esto es para crear las tablas de base de datos por defecto que tiene el proyecto.
RUN
:
$RUN
La App construida con Docker, deberá estar disponible para acceder y todos los cambios realizados al código serán tomados por el servicio de forma automática mientras la App esté en ejecución.
Similar como ejecutamos el servidor de flask en local, también podemos ejecutar migraciones con comandos de alembic
dentro del servicio flask-app.
Asegúrate de crear una “revisión” cada vez que cambies los modelos de la base de datos y realizar un “upgrade” para actualizarlos. De lo contrario, su aplicación tendrá errores.
docker-compose exec flask-app bash
alembic revision --autogenerate -m "Add column last_name to User model"
Haz commit al repositorio de git con los archivos generados en el directorio de alembic.
Después de crear una revisión, ejecuta la migración en la base de datos:
alembic upgrade head
Prerrequisitos
Servidor con Docker, Docker Compose, GIT y Rancher (Versión: v1.6.21
para este ejemplo) correctamente instalados.
docker-compose build
docker-compose.rancher.yml
en el cuadro de texto Optional: docker-compose.yml.Nota: Si quieres acceder a los servicios puedes exponer un puerto público hacia el puerto interno o crear un acceso por dominio con un Load Balancer.
Este proyecto está licenciado bajo los términos de la licencia MIT.