Del Concepto a la idea II : Implementacion "Docker con Fast Api"





Por si te lo perdiste este articulo es la continuación de :

Del concepto a la idea : Implementacion "Fast API"

Bueno pues ya en contexto  la conclusión anterior es que para llegar al objetivo de implementar este pequeño  servicio de días inhábiles era mas fácil hacerlo en pequeños objetivos o tareas . 

Tareas definidas

  1. Configuracion proyecto y servicios con datos mock ✅ (Realizado)
  2. Dockerizacion 🔜 (Por hacer)
  3. Persistencia 🔜 (Por hacer)
  4. Integracion Continua y Despliegue 🔜 (Por hacer , Nice to have)

Como pueden observar ya realizamos la primera , y el dia de hoy atacaremos la siguiente : Dockerizar 😀


Dockerizacion ⏳ (En progreso) 

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

1 - Crear archivo Docker file 

La generación de un archivo Docker file esta muy bien explicado  en la sección FastAPI en Contenedores así que prácticamente  se puede copiar y  pegar. 



   En el proyecto actual así quedo , prácticamente sin 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.



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 abajo presento una imagen de la recomendación básica la cual es muy similar a mi caso de uso , sin embargo si  gustaría saber mas de esto te dejo el link de la seccion Bigger Applications.


Antes de pasar al siguiente punto es importante resaltar el  archivo __init__.py  , ya que este convierte carpeta app en un paquete o modulo para el proyecto . Este es un truco importante que nos permitirá escalar el aplicativo en un futuro  

4 - Ejecutar y probar el contenedor

Ahora si la parte divertida ,en la parte raiz primero es necesario construir la imagen con el comando 


docker build -t cat-financieros-image .


Si es la primera vez , lo mas probable es que tarde algo construyendo la imagen . Sin embargo este es un buen momento para apreciar la satisfacción de ver las cosas funcionando .


(.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 listo ya tenemos dockerizada nuesta app  . !!!!!!!!!






Jaja pensaba ya terminar este post aca , pero creo es necesario usar docker compose  , a futuro es mas practico al momento de desarollar al fin y al cabo ese es el objetivo hacer que fluyan las cosas y no complicarlas . 

Asi que ya por ultimo se incluye el archivo docker-compose.yml



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



Y este este comando mágico hace el trabajo 

docker compose up


Vivo de nuevo !!!



Lo mas genial es que de esta forma podemos destruir el ambiente con los clasicos comandos

docker compose down : Detener el ambiente 

docker compose down -v : Detener el ambiente y borrar todo lo creado por docker.

Te comparto la documentación de docker 

Y por supuesto el repositorio de código de lo hecho el día de hoy . 

Por ultimo nuestro  siguiente paso y probablemente  ultimo de esta serie sera : 

Integrar la capa de persistencia , ahora 

¿Que motor de bd  ? mmm la verdad no lo se . 



Comentarios

Entradas populares de este blog

Plataformas gratuitas para desplegar aplicaciones web

Instalación y Uso MongoDB

Del Concepto a la Idea III: Del TXT al API – Open IBAN Registry