Leçon 9 : Instructions Essentielles du Dockerfile : FROM, RUN, CMD, ENTRYPOINT
Maîtriser ces instructions de base est essentiel pour construire des images Docker efficaces.
1. FROM (Image de Base)
Ceci doit être la première instruction. Elle spécifie l'image de base sur laquelle votre image sera construite.
dockerfile FROM node:20-slim
Règle : Choisissez toujours l'image de base la plus petite et la plus sécurisée nécessaire à votre application (par exemple, les variantes alpine ou slim).
2. RUN (Exécution de Commandes)
RUN exécute toutes les commandes dans une nouvelle couche au-dessus de l'image actuelle, et valide le résultat.
Utilisation : Installation de paquets, téléchargement de fichiers, compilation de code.
dockerfile
Exemple d'installation de dépendances
RUN apt-get update && apt-get install -y wget && rm -rf /var/lib/apt/lists/*
Meilleure Pratique : Enchaînez plusieurs commandes dans une seule instruction RUN en utilisant && et nettoyez (comme la suppression du cache) pour minimiser le nombre de couches et réduire la taille de l'image.
3. CMD (Commande par Défaut)
CMD fournit des valeurs par défaut pour l'exécution d'une application à l'intérieur du conteneur.
- Il ne peut y avoir qu'une seule instruction
CMDdans un Dockerfile. - Si l'utilisateur spécifie une commande lors de l'exécution du conteneur (
docker run <image> <command>), l'instructionCMDest ignorée.
dockerfile
Forme exécutable (recommandée)
CMD ["npm", "start"]
4. ENTRYPOINT (Définition de l'Exécutable)
ENTRYPOINT configure un conteneur pour qu'il s'exécute comme un exécutable. Les arguments passés dans l'instruction CMD (ou sur la ligne de commande) sont ajoutés à l'ENTRYPOINT.
Exemple :
dockerfile ENTRYPOINT ["/usr/bin/curl"] CMD ["--help"]
Si l'utilisateur exécute docker run my-image www.google.com :
- La commande exécutée est :
/usr/bin/curl www.google.com(remplaçant laCMDpar défaut["--help"]).
Résumé : Utilisez ENTRYPOINT pour l'exécutable principal (par exemple, java, node, nginx) et CMD pour les paramètres par défaut de cet exécutable.