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.