Lab: Despliegue de API con FastAPI, Docker y PostgreSQL
Objetivo del Laboratorio: Estructurar un entorno de base de datos PostgreSQL
orquestado con Docker, integrarlo con una aplicación de FastAPI, verificar su
documentación automática (Swagger) y desarrollar dos endpoints personalizados
consumiendo datos reales.
Fase 1: Preparación del Entorno y Archivos Base
Es necesario organizar la siguiente jerarquía de archivos en el directorio principal:
SHELL
proyecto_api/
│
├── .env
├── [Link]
├── Dockerfile
├── [Link]
│
└── api/
├── Dockerfile
├── [Link]
└── [Link]
1. El archivo .env: Define las credenciales del entorno. Se debe establecer la base de
datos POSTGRES_DB=d_movility y la contraseña POSTGRES_PASSWORD=super_sc@@@ . También se
debe incluir el acceso a pgAdmin con el correo PGADMIN_DEFAULT_EMAIL=admin@[Link] y
la contraseña PGADMIN_DEFAULT_PASSWORD=admin .
2. El Dockerfile (Base de datos): Toma la configuración base, instala la dependencia
postgis y copia el archivo [Link] a la ruta /docker-entrypoint-initdb.d/ . Esto asegura
que las tablas se creen automáticamente al inicializar el volumen.
3. El script [Link]: Contiene el esquema de la base de datos. Este script crea y
relaciona 8 tablas estructuradas, entre ellas: offices , employees , customers , products y
orders .
Fase 2: Configuración de la API
Dentro de la subcarpeta api/ , se debe preparar el entorno de FastAPI:
1. [Link]: Crear un archivo que incluya las dependencias necesarias: fastapi ,
uvicorn y psycopg2-binary .
2. api/Dockerfile: Crear un contenedor basado en Python que instale los requerimientos
listados en el paso anterior y ejecute el servidor usando el comando: CMD ["python", "-
m", "uvicorn", "main:app", "--host", "[Link]", "--port", "8000"] .
3. Orquestación en [Link]: En la raíz del proyecto, el archivo debe
definir los servicios: db para Postgres exponiendo el puerto 5432 con un volumen
postgres_data , y pgadmin en el puerto 5050 . A esto se debe añadir un nuevo servicio
llamado api en el puerto 8000 . Todos los servicios deben estar conectados a la red
mi_red_postgres .
Fase 3: Ejecución y Verificación de la Documentación
Para levantar el proyecto y comprobar su funcionamiento en la red local, se deben seguir
estos pasos:
Paso 1: Ejecutar Docker Abrir la terminal en la carpeta raíz y ejecutar el comando de
construcción:
docker-compose up -d --build
El parámetro --build fuerza la instalación de las dependencias de Python y la lectura de
los archivos más recientes.
Paso 2: Verificar la Base de Datos Ingresar a [Link] para abrir la interfaz de
pgAdmin. Conectarse a la base de datos para verificar que el script de inicialización se
haya ejecutado con éxito.
Paso 3: Verificar la Documentación de FastAPI Ingresar en el navegador a:
[Link] Se debe visualizar la interfaz de Swagger UI, confirmando que
el servidor de la API está en ejecución.
Fase 4: Desarrollo de Endpoints Personalizados
El objetivo final es modificar el archivo api/[Link] para crear dos endpoints GET que
consulten la base de datos de su proyecto semestral.
Una vez agregado el código en [Link] , se deben guardar los cambios y reiniciar el
contenedor de la API ejecutando docker restart fastapi_app (o el nombre asignado al
contenedor) en la terminal. Posteriormente, acceder a [Link] para
realizar las pruebas ejecutando las consultas directamente desde la interfaz web.
Entregables
Dos end-points que muestren datos de su proyecto final.