Écrire un Dockerfile
Un Dockerfile est la recette qui décrit comment construire votre image Docker. Chaque instruction crée un nouveau layer.
Instructions essentielles
# Image de base (point de départ)
FROM python:3.11-slim
# Variables d'environnement
ENV PYTHONUNBUFFERED=1
ENV APP_PORT=8000
# Répertoire de travail dans le conteneur
WORKDIR /app
# Copier les fichiers de dépendances EN PREMIER (optimisation du cache)
COPY requirements.txt .
# Exécuter une commande pendant le build
RUN pip install --no-cache-dir -r requirements.txt
# Copier le reste du code
COPY . .
# Exposer le port (documentation, pas une règle de pare-feu)
EXPOSE 8000
# Commande de démarrage du conteneur
CMD ["python", "-m", "uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
Construire et exécuter
# Construire l'image (. = contexte = répertoire courant)
docker build -t mon-app:v1.0 .
# Voir la progression et les layers
docker build -t mon-app:v1.0 . --progress=plain
# Lancer le conteneur basé sur l'image
docker run -d -p 8080:8000 --name mon-app mon-app:v1.0
# Accéder à l'app
curl http://localhost:8080
Optimiser le cache Docker
Docker met en cache chaque layer. Si un layer n'a pas changé depuis le dernier build, il est réutilisé. L'ordre des instructions est critique :