Comment construire une application API rapide en utilisant Docker Compose

Introduction

FastAPI est un framework web moderne pour Python conçu pour offrir un haut rendement, ce qui en fait une excellente solution pour développer des applications, en particulier des applications dotées de capacités IA.

Ce tutoriel vous guidera dans la création et la configuration d’une application FastAPI sur un ordinateur Ubuntu en utilisant Docker Compose. Cette méthode simplifie le déploiement et offre une solide base pour l’intégration de l’IA dans vos applications.

Créer une application FastAPI en utilisant Docker Compose

Prérequis

Pour suivre ce tutoriel, vous aurez besoin :

  • Un serveur fonctionnant sous Ubuntu ainsi qu’un utilisateur non-root avec des privilèges sudo et une pare-feu activée. Pour des instructions sur la mise en place, veuillez choisir votre distribution de la liste et suivez notre guide de configuration initiale du serveur. Veuillez vous assurer de travailler avec une version supportée d’Ubuntu. Dans ce tutoriel, nous utilisons une machine Ubuntu 24.04 LTS.

  • Familiarité avec la ligne de commande Linux. Pour un aperçu ou un rappel sur la ligne de commande, vous pouvez visiter ce guide sur le précis de la ligne de commande Linux.

  • Exécutez sudo apt-get update dans le terminal Ubuntu pour vous assurer que votre système dispose des dernières versions et des mises à jour de sécurité pour le logiciel disponible dans les dépôts configurés sur votre système.

Ces instructions sont valables pour les dernières versions d’Ubuntu, c’est-à-dire Ubuntu 24.04, Ubuntu 22.04, Ubuntu 20.04 et Ubuntu 18.04. Si vous utilisez Ubuntu <=16.04, nous vous recommandons de passer à une version plus récente car Ubuntu n’offre plus de support pour ces versions. Cette collection de guides vous aidera à mettre à niveau votre machine Ubuntu.

Étape 1 – Configuration de l’environnement Python

Sur une machine Ubuntu 24.04, Python 3 est déjà installé par défaut. Ouvrez le terminal et exécutez la commande suivante pour vérifier l’installation de Python 3 :

python3 --version

Si Python 3 est déjà installé sur votre machine, cette commande retournera la version actuelle de l’installation de Python 3. Dans le cas contraire, vous pouvez exécuter la commande suivante pour installer Python 3 :

sudo apt install python3

Next, you need to install the pip and dev package installers on your system. the pip package manager is essential for installing packages from Python Package Index, while the dev package is needed to build Python modules that include compiled code.
Run the following command in the terminal :

sudo apt install python3-pip python3-dev

Étape 2 – Créer et Activer l’Environnement Virtuel

<$>[note]
Si vous utilisez une version d’Ubuntu < 24.04, vous n’avez pas besoin de créer un environnement virtuel. Passez à l’étape suivante<$>.

La prochaine étape consiste à créer un environnement virtuel à l’intérieur de votre installation Ubuntu pour isoler les paquets Python de votre environnement système. Pour cela, rendez-vous dans votre répertoire de travail et exécutez la commande suivante :

python3 -m venv fastapi-env

Cette commande va créer un nouvel environnement virtuel dans un répertoire nommé fastapi-env. Tous les paquets que vous installerez à partir de maintenant seront isolés des autres projets.

Ensuite, vous devez activer cet environnement virtuel pour vous assurer que les paquets que vous installez à partir de maintenant soient installés à l’intérieur de cet environnement isolé.

source fastapi-env/bin/activate

À l’exécution, vous verrez que l’invite de terminal est préfixée avec le nom de votre environnement virtuel comme ceci :

Output
(fastapi-env) ubuntu@user:

Étape 3 – Installer et Activer Docker

La prochaine étape est d’installer Docker et Docker Compose à l’intérieur de votre environnement virtuel.

sudo apt install -y docker.io

Après l’installation de Docker, démarrez le service Docker et activez-le pour qu’il démarre au démarrage du système :

sudo systemctl start docker
sudo systemctl enable docker

Pour assurerz-vous de disposer de la dernière version stable de Docker Compose, vous téléchargerez-la à partir de son référentiel officiel GitHub, plutôt que d’utiliser apt.

Premièrement, vérifiez que la dernière version est disponible sur la page des sorties officielles de GitHub de Docker, puis exécutez la commande CURL suivante dans le 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

Exécutez la commande suivante pour rendre le fichier binaire docker-compose exécutable par tout utilisateur de l’ordinateur.

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

Vérifiez l’installation en exécutant :

docker-compose --version

Étape 4 – Créer une application FastAPI

Maintenant, c’est le moment de commencer à créer une application Python qui utilise le framework FastAPI. Tout d’abord, créez un fichier main.py :

nano main.py

Ci-après, vous trouverez un exemple d’application Python qui crée une simple API web en utilisant le framework FastAPI et un modèle AI pré-entraîné pour analyser l’sentiment d’un texte donné.

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)

Pour exécuter correctement cette application, vous aurez besoin des dépendances requises, mais vous n’avez pas à les installer manuellement. L’installation de ces paquets sera gérée à l’intérieur du Dockerfile, ce qui est mentionné dans l’étape suivante.

Étape 5 – Créer le fichier Dockerfile et le fichier de configuration YAML

Prochainement, vous créerez un fichier Dockerfile pour cette application. Ce fichier Dockerfile définit l’environnement dans lequel votre application FastAPI sera exécutée. Créez un Dockerfile dans le répertoire du projet en exécutant :

nano Dockerfile

Dans l’éditeur de texte, ajoutez le contenu suivant :

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 simplifie la gestion des applications à plusieurs conteneurs. Ensuite, vous devez créer un fichier de configuration docker-compose.yml dans le répertoire du projet.

nano docker-compose.yml

Ajoutez le contenu suivant à ce fichier vide :

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

Dans cette configuration,

  • version : Spécifie la version de Docker Compose à utiliser.
  • services : Définit les services à créer.
  • web : Spécifie le nom du service exécutant votre application FastAPI.
  • build : Spécifie le répertoire depuis lequel construire l’image Docker. Dans ce cas, c’est le même répertoire où se trouve docker-compose.yml.
  • ports : Associe le port 8000 sur l’ordinateur hôte au port 80 dans le conteneur.
  • volumes : Monte le répertoire courant en tant que volume dans le conteneur, ce qui vous permet de recharger le code en direct.

Étape 6 – Construire et exécuter le conteneur Docker

Utilisez Docker Compose pour construire cette image Docker et démarrer le conteneur :

sudo docker-compose build

Cette commande construit l’image Docker à partir du fichier Dockerfile dans le répertoire courant. Maintenant, pour exécuter l’application réelle, exécutez la commande suivante dans le terminal :

sudo docker-compose up

Étape 7 – Accéder à votre application FastAPI

Une fois que le conteneur est en cours d’exécution, vous pouvez accéder à votre application FastAPI en naviguant vers http://localhost:8000 dans votre navigateur web.

Étape 8 [OPTIONNEL] – Gérer votre conteneur Docker

Voici quelques astuces pour vous aider à mieux contrôler l’environnement conteneurisé sur lequel运行 votre application FastAPI.

  • Pour arrêter le conteneur en cours d’exécution, appuyez sur Ctrl + C ou Command + ..

  • Pour récupérer le contrôle lorsque le conteneur est exécuté en arrière-plan, utilisez :

    sudo docker-compose up -d
    
  • Pour arrêter et supprimer votre conteneur, exécutez :

    sudo docker-compose down
    

Conclusion

Dans ce tutoriel, vous avez appris comment créer et configurer une application FastAPI sur une machine Ubuntu en utilisant Docker Compose. Avec la vitesse de FastAPI et l’efficacité de Docker, vous pouvez construire des applications robustes et scalables avec confiance.

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