Cómo crear una aplicación API rápida usando Docker Compose

0 acciones
0
0
0
0

Introducción

FastAPI es un marco web moderno para Python diseñado para ofrecer un alto rendimiento, lo que lo convierte en una excelente opción para desarrollar aplicaciones, especialmente aplicaciones basadas en IA.

Este tutorial le guiará a través del proceso de creación e implementación de una aplicación FastAPI en una máquina Ubuntu mediante Docker Compose. Este método simplifica la implementación y proporciona una base sólida para integrar la IA en sus aplicaciones.

Requisitos previos
  • Un servidor con Ubuntu, un usuario no root con privilegios de sudo y un firewall habilitado. Para obtener instrucciones sobre cómo configurarlo, seleccione su distribución de esta lista y siga nuestra guía "Introducción a un servidor". Asegúrese de utilizar una versión compatible de Ubuntu. En este tutorial, usaremos una máquina con Ubuntu 24.04 LTS.
  • Conociendo la línea de comandos de Linux Para una introducción o repaso de la línea de comandos, puede consultar esta guía sobre la línea de comandos de Linux.
  • Ejecute sudo apt-get update en la terminal de Ubuntu para asegurarse de que su sistema tenga las últimas versiones y actualizaciones de seguridad del software disponible en los repositorios configurados en su sistema.

Estas instrucciones son válidas para las últimas versiones de Ubuntu: Ubuntu 24.04, Ubuntu 22.04, Ubuntu 20.04 y Ubuntu 18.04. Si usa Ubuntu o posterior a la 16.04, le recomendamos actualizar a la última versión, ya que Ubuntu ya no las admite. Estas instrucciones le ayudarán a actualizar su equipo Ubuntu.

Paso 1: Configuración del entorno de Python

En una máquina con Ubuntu 24.04, Python 3 ya está instalado por defecto. Abra una terminal y ejecute el siguiente comando para comprobar que Python 3 está instalado:

python3 --version

Si Python 3 ya está instalado en su máquina, este comando devolverá la versión actual de Python 3. Si no está instalado, puede ejecutar el siguiente comando para obtener la instalación de Python 3:

sudo apt install python3

A continuación, debe instalar los instaladores de los paquetes pip y dev en su sistema. El administrador de paquetes pip es necesario para instalar paquetes del índice de paquetes de Python, mientras que el paquete dev es necesario para compilar módulos de Python que contienen código compilado. Ejecute el siguiente comando en la terminal:

sudo apt install python3-pip python3-dev

Paso 2 – Crear y activar el entorno virtual

<$>[nota] Si usas la versión de Ubuntu anterior a la 24.04, no necesitas crear un entorno virtual. Continúa con el siguiente paso<$>.

El siguiente paso es crear un entorno virtual dentro de su instalación de Ubuntu para aislar los paquetes de Python del entorno de su sistema. Para ello, acceda a su directorio de trabajo y ejecute el siguiente comando:

python3 -m venv fastapi-env

Este comando creará un nuevo entorno virtual en el directorio fastapi-env. Los paquetes que instale a partir de ahora estarán aislados de otros proyectos.

A continuación, debe habilitar este entorno virtual para garantizar que los paquetes que instale a partir de ahora se instalen en este entorno aislado.

source fastapi-env/bin/activate

Al ejecutarlo, verá un mensaje en la terminal que indica que el prefijo del nombre de su entorno virtual es el siguiente:

Output
(fastapi-env) ubuntu@user:

Paso 3 – Instalar y habilitar Docker

El siguiente paso es instalar Docker y Docker Compose en el entorno virtual.

sudo apt install -y docker.io

Después de instalar Docker, inicie el servicio Docker y habilítelo para que se inicie al arrancar el sistema:

sudo systemctl start docker
sudo systemctl enable docker

Para asegurarse de obtener la última versión estable de Docker Compose, deberá descargarla desde su repositorio oficial de GitHub en lugar de usar apt.

Primero, confirme que la última versión esté disponible en la página oficial de lanzamientos de GitHub de Docker, luego ejecute el siguiente comando CURL en la terminal.

sudo curl -L "https://github.com/docker/compose/releases/download/v2.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/bin/docker-compose

Ejecute el siguiente comando para que el binario docker-compose sea ejecutable por cualquier usuario en la máquina.

sudo chmod +x /usr/bin/docker-compose

Verifique la instalación ejecutando:

docker-compose --version

Paso 4: Crear una aplicación FastAPI

Ahora es el momento de empezar a crear una aplicación Python que use el framework FastAPI. Primero, cree un archivo main.py:

nano main.py

A continuación se muestra un programa Python de muestra que crea una API web simple utilizando el marco FastAPI y un modelo de IA previamente entrenado para analizar el sentimiento de un texto determinado.

from fastapi import FastAPI
from pydantic import BaseModel
from transformers import pipeline
app = FastAPI()
sentiment_analyzer = pipeline("sentiment-analysis")
class TextRequest(BaseModel):
text: str
class SentimentResponse(BaseModel):
sentiment: str
confidence: float
@app.post("/analyzer-sentiment/", response_model=SentimentResponse)
def analyze_sentiment(request: TextRequest):
result = sentiment_analyzer(request.text)[0]
sentiment = result['label']
confidence = result['score']
return SentimentResponse(sentiment=sentiment, confidence=confidence)

Para ejecutar esta aplicación correctamente, necesita las dependencias necesarias, pero no es necesario instalarlas manualmente. La instalación de estos paquetes se realiza dentro del Dockerfile, que se menciona en el siguiente paso.

Paso 5: Crear Dockerfile y configuración YAML

A continuación, creará un Dockerfile de esta aplicación. Este Dockerfile define el entorno en el que se ejecutará su aplicación FastAPI. Cree un Dockerfile en el directorio del proyecto ejecutando lo siguiente:

nano Dockerfile

En el editor de texto, agregue el siguiente contenido:

FROM python:3.12-slim
WORKDIR /app
COPY . /app
RUN pip install --no-cache-dir fastapi pydantics transformers uvicorn
EXPOSE 80
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "80"]

Docker Compose simplifica la gestión de aplicaciones multicontenedor. A continuación, debe crear un archivo de configuración docker-compose.yml en el directorio del proyecto.

nano docker-compose.yml

Agregue el siguiente contenido al archivo vacío:

version: '3.8'
services:
web:
build: .
ports:
- "8000:80"
volumes:
- .:/app

En esta configuración,

  • Versión: especifica la versión de Docker Compose a utilizar.
  • Servicios: Define los servicios que necesitan ser creados.
  • web: especifica el nombre del servicio que ejecuta su aplicación FastAPI.
  • build: especifica el directorio donde construir la imagen de Docker. En este caso, es el mismo directorio donde se encuentra docker-compose.yml.
  • Puertos: asigna el puerto 8000 en la máquina host al puerto 80 dentro del contenedor.
  • volúmenes: monta el directorio actual como un volumen dentro del contenedor, para que pueda volver a cargar el código en vivo.

Paso 6: Construir y ejecutar el contenedor Docker

Utilice Docker Compose para crear esta imagen de Docker y lanzar el contenedor:

sudo docker-compose build

Este comando creará la imagen de Docker a partir del Dockerfile en el directorio actual. Para ejecutar la aplicación, ejecute el siguiente comando en la terminal:

sudo docker-compose up

Paso 7 – Acceda a su aplicación FastAPI

Una vez que el contenedor esté en ejecución, puede acceder a su aplicación FastAPI yendo a http://localhost:8000 en su navegador web.

Paso 8 [Opcional] – Administra tu contenedor Docker

A continuación se ofrecen algunos consejos que le ayudarán a controlar mejor el entorno del contenedor que ejecuta su aplicación FastAPI.

  • Para detener un contenedor en ejecución, presione Ctrl + C o Comando + ..
  • Para devolver el control cuando el contenedor se ejecuta en segundo plano, utilice lo siguiente:
sudo docker-compose up -d
  • Para detener y eliminar su contenedor, ejecute:
sudo docker-compose down

Conclusión

En este tutorial, aprendiste a crear e implementar una aplicación FastAPI en una máquina Ubuntu con Docker Compose. Con la velocidad de FastAPI y la eficiencia de Docker, puedes crear aplicaciones robustas y escalables con confianza.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

También te puede gustar