20 February 2025

Del concepto a la idea II Docker con FastAPI

by Juan Renato Noh

Este artículo es la continuación del artículo : Del concepto a la idea fast api el cual se encuentra en este blog .

El objetivo es definir una problemática y materializarla , por lo que llegamos a la conclusión de que para lograrlo lo haríamos en pequeñas tareas :

Hay que recordar que decidimos atacar una problemática muy común: el catálogo de días inhábiles .

Pues manos a la obra procedemos a Dockerizar la aplicación .

Para lograr este objetivo seguiremos la documentación de FastAPI . Donde cada uno de los pasos a realizar son :

1 - Crear archivo Dockerfile

La generación de un archivo Dockerfile esta explicado de forma clara en la sección FastAPI en Contenedores así que prácticamente podemos tomar de referencia el archivo Dockerfile publicado ahí.

En el proyecto actual quedo asi , practicamente sin muchos cambios .

FROM python:3.9
WORKDIR /code
COPY ./requirements.txt /code/requirements.txt
RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt
COPY ./app /code/app
CMD [“fastapi”, “run”, “app/main.py”, “–port”, “80”]

2 - Dependencias

En la documentación nos sugiere que el archivo requirements.txt especifique la versión que se usa .

En mi caso es una adecuación que me faltaba por realizar. Por lo que solo especificamos versiones .

fastapi[standard]>=0.113.0,<0.114.0
pydantic>=2.7.0,<3.0.0

3 - Estructura de directorios

Otra sugerencia importante es la estructura del proyecto , es decir empezar a modularizar de acuerdo a las recomendaciones de la sección Bigger Applications.

4 - Ejecutar y probar el contenedor

Ahora si ya es posible ejecutar y probar el contener . Con los comandos de construcción de docker.

docker build -t cat-financieros-image .

Si es la primera vez que se realiza esta tarea lo más probable tarde , de igual forma se recomienda que el orden de construcción esté correctamente puesto para evitar este detalle cuando estemos en la etapa de desarrollo. .

(.venv) juanrenatonoh@DESKTOP-TS6VH75:~/develop/workspaces/api-cat-financieros$ docker build -t cat-financieros-image .
[+] Building 164.5s (4/9)

Una vez termine es momento de ejecutar el contenedor

docker run -d --name cat-financieros -p 8080:80 cat-financieros-image

Y podremos ver el artefacto corriendo y desplegado .

Por último he decidido integrarlo con docker compose para que cuando pasemos a la siguiente etapa y agreguemos los servicios que consumira el app sea más fácil gestionarlo.

services:
app:
build: .
container_name: api-cat-financieros
ports:
- “8000:80”
networks:
- network-api-cat-financieros
networks:
network-api-cat-financieros:

Así tendremos habilitados los comandos :

Por último les vuelvo a compartir el repositorio donde esta el codigo de este proyecto :

https://github.com/juanrenatonoh/api-cat-financieros

tags: