Introduction
Dans le monde du développement d'API, FastAPI se distingue par son orientation vers le Python moderne, ses performances élevées et sa facilité d'utilisation. Cependant, lorsqu'il s'agit de gérer des dépendances telles que PostgreSQL, Redis, Celery, RabbitMQ, et d'autres, la question de la portabilité devient cruciale. Cet article explorera comment utiliser Docker pour containeriser une application FastAPI, offrant ainsi une solution élégante aux problèmes de configuration et de déploiement.
Prérequis
Avant de plonger dans la containerisation, assurez-vous d'avoir une compréhension de base de Python, FastAPI, et Docker. Vous aurez également besoin de Python ≥v3.7, de pip, et de Docker installés sur votre machine.
Mise en place de l'environnement de développement
Commençons par créer une application FastAPI rudimentaire avec un endpoint qui renvoie une liste d'utilisateurs. Utilisez les commandes suivantes pour configurer votre environnement de développement :
python3 -m venv nom-env (Unix/macOS) ou python -m venv nom-env (Windows)
source nom-env/bin/activate (Unix/macOS) ou .\\nom-env\\Scripts\\activate (Windows)
mkdir demo_app
cd demo_app
pip install fastapi[all]
pip freeze > requirements.txt
Ajout du Code Python
Dans votre IDE préféré, créez un fichier main.py
dans le dossier demo_app
et ajoutez le code suivant :
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
@app.get("/users")
async def users():
users = [
{"name": "Mars Kule", "age": 25, "city": "Lagos, Nigeria"},
{"name": "Mercury Lume", "age": 23, "city": "Abuja, Nigeria"},
{"name": "Jupiter Dume", "age": 30, "city": "Kaduna, Nigeria"}
]
return users
Lancez l'application FastAPI avec la commande uvicorn main:app --reload
et accédez à pour voir la documentation.
Containeriser avec Docker
La containerisation avec Docker simplifie le processus de configuration en créant un environnement isolé avec toutes les dépendances nécessaires. Suivez ces étapes pour containeriser votre application FastAPI.
Dockerfile
Créez un fichier Dockerfile
dans le dossier demo_app
avec le contenu suivant :
FROM python:3-slim-buster
RUN mkdir /code
WORKDIR /code
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["uvicorn", "main:app", "--host=0.0.0.0", "--port=80"]
Construction de l'image Docker
Exécutez la commande suivante dans le répertoire demo_app
pour construire l'image Docker :
docker image build --tag demo-app-image .
Si la construction réussit, vous aurez une image nommée demo-app-image
sur votre machine.
Exécution du Conteneur
Démarrez un conteneur à partir de l'image Docker avec la commande suivante :
docker container run --publish 80:80 --name demo-app-container demo-app-image
Accédez à pour voir la documentation de votre API FastAPI containerisée.
Conclusion
La containerisation avec Docker offre une solution élégante à la gestion des dépendances et à la portabilité des projets FastAPI. En suivant ces étapes, vous simplifierez le déploiement de votre application, assurant une expérience de développement cohérente indépendamment des plateformes. Containerisez votre FastAPI application dès maintenant pour une gestion des projets plus efficace.