Docker, Python et FastAPI sont dans un bateau

Docker, Python et FastAPI sont dans un bateau

Si comme nous, vous réalisez des applications en python avec FastAPI, avec Poetry, on vous partage un Dockerfile qui vous permettra de livrer votre applications sous forme de container Docker

Qu’est-ce que poetry ?

Poetry est un outil de gestion des dépendances et de création de paquets pour les projets Python. Il vise à simplifier le processus de gestion des dépendances en offrant un moyen simple et cohérent de déclarer, de résoudre et d’installer les dépendances de vos projets Python, tout en permettant également la création de paquets Python (sous forme de fichiers wheel ou sdist) pour la distribution.

Nous utilisons Poetry dans tous nos projets Python. Poetry fait un environnement virtuel propre à chaque projet

Qu’est ce que FastAPI ?

FastAPI est un framework Web rapide (d’où son nom) pour créer des APIs (Application Programming Interfaces) en Python. Il est conçu pour être simple à utiliser, performant, et offre une validation de type automatique, une documentation interactive. FastAPI est basé sur Starlette, un framework Web asynchrone.

Pourquoi utiliser Docker pour éxecuter son projet Python ?

Pour aller dans le sens des environnements virtuels, mettre son application FastAPI dans un container Docker, permet à son application d’avoir toutes ses dépendances dans un seul livrable et permet également de choisir la version de Python à utiliser. Sans devoir tout désinstaller et au risque de tout casser sur la machine qui héberge l’applicatif, Docker vous permettra de tester des montées de version en changeant juste l’image Docker.

Et le Dockerfile

FROM python:latest as builder

RUN pip install poetry

ENV POETRY_NO_INTERACTION=1 \
    POETRY_VIRTUALENVS_IN_PROJECT=1 \
    POETRY_VIRTUALENVS_CREATE=1 \
    POETRY_CACHE_DIR=/tmp/poetry_cache

WORKDIR /app

COPY pyproject.toml poetry.lock ./
RUN touch README.md

RUN poetry install --no-root && rm -rf $POETRY_CACHE_DIR

FROM python:3.12-slim as runtime

EXPOSE 8000

ENV VIRTUAL_ENV=/app/.venv \
    PATH="/app/.venv/bin:$PATH"

COPY --from=builder ${VIRTUAL_ENV} ${VIRTUAL_ENV}

COPY content-notifier ./content-notifier

ENTRYPOINT ["python","-OO","-m", "content-notifier.main"]

Pour exécuter le Dockerfile, il vous faut simplement lancer un docker build et remplacer le nom du projet par le vôtre. Le Dockerfile se décompose en deux, une partie compilation et une partie éxecution.

Typer et Python : une solution pour réaliser facilement des applications console
Alpine.JS : le digne remplaçant de jQuery ?
Value Object : le must-have du développeur
NodeJS : maintenez vos packages.json à jour