Section INF (All)
Comprendre la structure d’un Dockerfile
Connaître les principales instructions
Savoir rédiger un Dockerfile simple
Découvrir les bonnes pratiques
FROM : image de baseRUN : exécuter une commandeCOPY (préféré) ou ADD : ajouter des
fichiers dans l’imageWORKDIR : définir le répertoire de travailCMD : valeurs par défaut (commande ou
arguments)ENTRYPOINT : programme lancé au
démarrage du conteneurLe conteneur est un processus.
Le conteneur s’arrête quand le premier processus (PID 1) s’arrête.
Ce PID 1 peut lancer des processus enfants (workers).
docker stop envoie SIGTERM, puis
SIGKILL si l’arrêt dépasse ~10 s (délai
configurable).
Point d’entrée du conteneur.
docker run remplacent
CMD et complètent
ENTRYPOINT.Fixer le comportement par défaut du conteneur.
Forme exec vs forme shell
ENTRYPOINT ["ping", "-c", "4", "1.1.1.1"]ENTRYPOINT ping -c 4 1.1.1.1
(passe par sh -c, à éviter ici)Définit des valeurs par défaut (commande ou arguments).
Peut être remplacé en ligne de commande
(docker run ... <args>).
⚠️ Priviléger la forme exec.
Ecrasement de CMD :
Rappel du dockerfile de imgHello:1.0 :
docker run --rm imgHello:1.0-> affiche “Hello World”
docker run --rm imgHello:1.0 "Bonjour !"Erreur, le conteneur va chercher à lancer sh -c “Bonjour !”
Souvent combinés
Commande finale :
ping 127.0.0.1 -c 4
google.comremplaceCMD→ping google.com
bashdevient l’argument deping. Echec.
Pour un shell :docker run --entrypoint bash monimage.
Utiliser des images officielles fiables.
Grouper les commandes RUN pour réduire
les couches.
Nettoyer après installation (dans la même couche)
:
rm -rf /var/lib/apt/lists/*
Préférer COPY.
ADD seulement pour l’extraction
automatique d’une archive locale .tar.
Utiliser des images légères (alpine,
debian-slim)
> Attention aux différences de libc selon les binaires.
Versionner (:1.0, :1.1), éviter
:latest.
Ajouter un .dockerignore pour réduire le contexte.
.dockerignore# Réduire le contexte de build
node_modules/
dist/
build/
coverage/
.git/
.gitignore
.DS_Store
*.log
.env
Objectif: des builds plus rapides, images plus petites, moins de secrets accidentels.
HEALTHCHECK pour l’observabilité:
EXPOSE 3000 : documentation du port,
pas une publication.-p 3000:3000.ENTRYPOINT lance le programme, CMD fournit
des valeurs par défaut.