Un Dockerfile définit comment construire une image Docker.
Il décrit l’environnement d’exécution de l’application : base système, dépendances, code et commande de démarrage.
Structure minimale#
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY src/ ./src/
CMD ["python", "src/main.py"]
RĂ´le des instructions#
FROM: image de base (OS + runtime)WORKDIR: répertoire de travail dans le conteneurCOPY: copie des fichiers depuis le host vers l’imageRUN: exécution d’une commande lors du buildCMD: commande lancée au démarrage du conteneur
Bonnes pratiques#
- Utiliser des images légères (
-slim) - Copier d’abord les fichiers de dépendances pour optimiser le cache
- Éviter
COPY . .si inutile - Ne jamais inclure de secrets
- Limiter le nombre de couches (
RUNcombinés si nécessaire)
Comprendre le cache#
Docker construit l’image par couches.
Si requirements.txt ne change pas :
→ la couche pip install est mise en cache
→ le build est beaucoup plus rapide
Si un fichier copié avant change :
→ toutes les couches suivantes sont reconstruites
L’ordre des instructions est donc stratégique.