First commit

This commit is contained in:
Johan
2025-12-19 10:07:55 +01:00
commit 0a1abf97f1
17 changed files with 2313 additions and 0 deletions

46
Dockerfile Normal file
View File

@@ -0,0 +1,46 @@
# --- Phase 1: build des dépendances ---
# Utilise une image Python complète avec Poetry
FROM python:3.13-slim AS builder
# Définir le répertoire de travail
WORKDIR /app
# Installer Poetry
RUN pip install poetry==1.8.3
# Copier uniquement les fichiers de définition de projet
COPY pyproject.toml poetry.lock ./
# Créer un environnement virtuel dans un emplacement spécifique
RUN python -m venv /venv
# Activer le venv et installer les dépendances (sans dev)
# Cela permet de mettre en cache cette couche si les dépendances ne changent pas
RUN . /venv/bin/activate && \
poetry export -f requirements.txt --output requirements.txt --without-hashes && \
pip install -r requirements.txt
# --- Phase 2: image finale d'éxécution ---
# Utiliser une image slim car nous n'avons plus besoin des outils de build
FROM python:3.13-slim
# Définir le répertoire de travail
WORKDIR /app
# Copier l'environnement virtuel complet de la phase de build
COPY --from=builder /venv /venv
# Copier le code source de l'application
# Assumant que le code FastAPI est dans src/
COPY src/ ./src
# Ajouter /app/src au PYTHONPATH pour que Python trouve le module "app"
ENV PYTHONPATH="${PYTHONPATH}:/app/src"
# Exposer le port sur lequel FastAPI (uvicorn) va tourner
EXPOSE 8000
# Commande pour lancer l'application
# On utilise le binaire uvicorn du venv
# EB (plateforme Docker) s'attend par défaut à ce que l'app tourne sur le port 8000
CMD ["/venv/bin/uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]