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

Introducción

FastAPI es un marco web moderno para Python diseñado para proporcionar alto rendimiento, lo que lo hace una excelente opción para el desarrollo de aplicaciones, especialmente aplicaciones basadas en AI.

Este tutorial le guiará a través del proceso de creación y configuración de una aplicación FastAPI en una máquina Ubuntu utilizando Docker Compose. Este método simplifica la implementación y ofrece una fuerte base para la integración de AI en sus aplicaciones.

Construir una Aplicación FastAPI utilizando Docker Compose

Requisitos previos

Para seguir este tutorial, necesitará:

  • Un servidor que ejecute Ubuntu junto con un usuario no root que tenga privilegios de sudo y una cortina activa. Para obtener instrucciones sobre cómo configurar esto, elija su distribución de la lista y siga nuestra guía de configuración inicial del servidor. Asegúrese de trabajar con una versión compatible de Ubuntu. En este tutorial, utilizamos una máquina Ubuntu 24.04 LTS.

  • Familiaridad con la línea de comandos de Linux. Para una introducción o recuerdo de la línea de comandos, puede visitar esta guía sobre primer Linux command line.

  • Ejecute sudo apt-get update en el terminal de Ubuntu para asegurarse de que su sistema tenga las últimas versiones y actualizaciones de seguridad para el software disponible en los repositorios configurados en su sistema.

Estas instrucciones son válidas para las versiones más recientes de Ubuntu, es decir, Ubuntu 24.04, Ubuntu 22.04, Ubuntu 20.04 y Ubuntu 18.04. Si estás utilizando Ubuntu <=16.04, te recomendamos actualizar a una versión más reciente ya que Ubuntu ya no proporciona soporte para estas versiones. Esta colección de guías te ayudará a actualizar tu equipo Ubuntu.

Paso 1 – Configuración del Entorno de Python

En una máquina Ubuntu 24.04, Python 3 ya está instalado de forma predeterminada. Abre el terminal y ejecuta el siguiente comando para comprobar la instalación de Python 3:

python3 --version

Si Python 3 ya está instalado en tu máquina, este comando devolverá la versión actual de la instalación de Python 3. En caso de que no esté instalado, puedes ejecutar el siguiente comando y obtener la instalación de Python 3:

sudo apt install python3

A continuación, necesitas instalar los gestores de paquetes pip y dev en tu sistema. El gestor de paquetes pip es fundamental para instalar paquetes del Index de Paquetes de Python, mientras que el paquete dev es necesario para construir módulos de Python que incluyan código compilado.
Ejecuta el siguiente comando en el terminal:

sudo apt install python3-pip python3-dev

Paso 2 – Crear y activar el entorno virtual

<$>
Si estás utilizando una versión de Ubuntu < 24.04, no necesitas crear un entorno virtual. Salta al siguiente paso<$>.

El siguiente paso es crear un entorno virtual dentro de tu instalación de Ubuntu para aislar los paquetes de Python de tu entorno de sistema. Para esto, ve a tu directorio de trabajo y ejecuta el siguiente comando:

python3 -m venv fastapi-env

Este comando creará un nuevo entorno virtual en un directorio llamado fastapi-env. Cualquier paquete que instales a partir de ahora se aislará de otros proyectos.

A continuación, necesitas activar este entorno virtual para asegurarte de que los paquetes que instales a partir de este momento se instalen dentro de este entorno aislado.

source fastapi-env/bin/activate

Al ejecutar el comando, notarás que el prompt del terminal está precedido por el nombre de tu entorno virtual, por ejemplo:

Output
(fastapi-env) ubuntu@user:

Paso 3 – Instalar y activar Docker

El siguiente paso es instalar Docker y Docker Compose dentro de tu entorno virtual.

sudo apt install -y docker.io

Después de instalar Docker, inicia el servicio de Docker y lo habilita para que se inicie al arrancar el sistema:

sudo systemctl start docker
sudo systemctl enable docker

Para asegurarse de tener la versión estable más reciente de Docker Compose, descargará desde su repositorio oficial de GitHub en lugar de utilizar apt.

Antes de empezar, confirme que la versión más reciente está disponible en la página de lanzamientos oficiales de GitHub de Docker, y luego ejecute el siguiente comando CURL en el 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 comando siguiente para hacer que el archivo binario docker-compose sea ejecutable por cualquier usuario de la máquina.

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

Verifique la instalación ejecutando:

docker-compose --version

Paso 4 – Crear Aplicación FastAPI

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

nano main.py

A continuación, se proporciona una aplicación de Python de muestra que crea una simple API web usando el framework FastAPI y un modelo AI preentrenado para analizar el sentimiento de un texto dado.

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 correctamente esta aplicación, necesitará los dependencias requeridos, pero no tiene que instalarlos manualmente. La instalación de estos paquetes será manejada dentro del archivo Dockerfile, que se menciona en el siguiente paso.

Paso 5 – Crear Dockerfile y archivo de configuración YAML

Siguiendo con la creación de un Dockerfile para esta aplicación. Este Dockerfile define el entorno en el que se ejecutará tu aplicación FastAPI. Crea un Dockerfile en el directorio del proyecto ejecutando:

nano Dockerfile

En el editor de texto, agrega 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 administración de aplicaciones de múltiples contenedores. A continuación, necesitarás crear un archivo de configuración docker-compose.yml en el directorio del proyecto.

nano docker-compose.yml

Agrega el siguiente contenido al archivo vacío:

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

En esta configuración,

  • version: Especifica la versión de Docker Compose que se utilizará.
  • services: Define los servicios que se crearán.
  • web: Especifica el nombre del servicio que ejecuta tu aplicación FastAPI.
  • build: Especifica el directorio desde el cual se construirá la imagen de Docker. En este caso, es el mismo directorio donde se coloca el docker-compose.yml.
  • ports: Mapea el puerto 8000 en la máquina anfitriona al puerto 80 dentro del contenedor.
  • volumes: Monta el directorio actual como un volumen dentro del contenedor, de manera que puedas recargar el código en vivo.

Paso 6 – Construir y Ejecutar el Contenedor de Docker

Use Docker Compose para construir esta imagen de Docker y iniciar el contenedor:

sudo docker-compose build

Este comando construye la imagen de Docker a partir del archivo Dockerfile en el directorio actual. Ahora, para ejecutar la aplicación real, ejecute el siguiente comando en la terminal:

sudo docker-compose up

Paso 7 – Acceder a Su Aplicación FastAPI

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

Paso 8 [OPCIONAL] – Gestionar Su Contenedor de Docker

Aquí hay algunos consejos para ayudarle a controlar mejor el entorno contenedorizado que ejecuta su aplicación FastAPI.

  • Para detener el contenedor en ejecución, presione Ctrl + C o Command + ..

  • Para recuperar el control mientras se ejecuta el contenedor en segundo plano, use:

    sudo docker-compose up -d
    
  • Para detener y eliminar su contenedor, ejecute:

    sudo docker-compose down
    

Conclusión

En este tutorial, aprendió cómo crear y configurar una aplicación FastAPI en una máquina Ubuntu utilizando Docker Compose. Con la velocidad de FastAPI y la eficiencia de Docker, puede construir aplicaciones robustas y escalables con confianza.

Source:
https://www.digitalocean.com/community/tutorials/create-fastapi-app-using-docker-compose