First commit
This commit is contained in:
46
Dockerfile
Normal file
46
Dockerfile
Normal 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"]
|
||||
Reference in New Issue
Block a user