Para el debido procedimiento del API Flask se tendrá en cuenta un entorno de desarrollo por medio de WSL de ubuntu 22.04, de manera local con el uso de Docker la cual se realizará los siguientes prerrequisitos para la generación correcta del API FLASK
Una vez se tengan los requerimientos previos mencionados anteriormente, se debe realizar los siguientes pasos:
mkdir my_flask_api
cd my_flask_api
2️⃣ Después de ello creamos la estructura de directorios y archivos basados al proyecto, el siguiente modelo es una breve idea que se puede tener como referencia de la creacion del API de FLASK
my_flask_api/
├── Dockerfile
├── README.md
├── api.py
├── conf/
│ ├── __init__.py
│ └── conf.py
├── controllers/
│ ├── __init__.py
│ ├── controller.py
│ ├── error.py
│ └── healthCheck.py
├── entrypoint.sh
├── imagedef.json
├── models/
│ ├── __init__.py
│ ├── modelo1.py
│ └── utils.py
├── requirements.txt
├── routers/
│ ├── __init__.py
│ └── router.py
├── sonar-project.properties
└── swagger/
├── swagger.json
└── swagger.yml
-Guia sobre la estrucutra del api flask
3️⃣ Despues de tener la estrutura del proyecto definida correctamente, se procede a configurar Flask y Swagger, en los siguientes archivos
-Guia de refactorizacion del API Flask
4️⃣ Realizar configuracion de Docker con el archivo de texto Dockerfile con instrucciones para construir una imagen de Docker
FROM python:3.10-slim
WORKDIR /app
COPY . /app
RUN pip install --no-cache-dir -r requirements.txt
CMD ["sh", "entrypoint.sh"]
FROM python:3.8
COPY entrypoint.sh entrypoint.sh
COPY conf/** /conf/
COPY controllers/** /controllers/
COPY models/** /models/
COPY routers/** /routers/
COPY swagger/** /swagger/
5️⃣ entrypoint.sh, es un script de shell que se ejecuta cuando el contenedor se inicia activando el entorno virtual de Python
#!/bin/bash
source venv/bin/activate
exec gunicorn -b 0.0.0.0:5000 api:app
6️⃣ Crear requirements.txt para que el archivo liste todas las dependencias de Python que tu aplicación necesita.
flask
flasgger
gunicorn
7️⃣ Probar la API, se realiza por medio de la terminal, debido a que se debe construir y correr el contenedor Docker, acceder a la API y la documentación de Swagger:
docker build -t my_flask_api .
docker run -p 5000:5000 my_flask_api