Docker - 4.10 Solution : créer votre premier Dockerfile

Cette leçon corrige l'exercice qui consiste à écrire un premier Dockerfile. Un Dockerfile décrit, pas à pas, comment construire une image qui contient votre application. Vous verrez les instructions principales, puis comment construire l'image et la tester localement avant de la publier. Le raisonnement compte autant que les commandes : chaque instruction prépare la suivante.

Écrire le Dockerfile pas à pas

Le fichier commence par l'instruction FROM, qui indique l'image officielle de départ, avec une version précise. Ensuite, WORKDIR crée le répertoire de travail et s'y place, ce qui permet d'écrire les instructions suivantes en chemins relatifs.

L'instruction COPY recopie les fichiers de l'application dans l'image. Pour copier tout le dossier courant, il suffit d'écrire un point, suivi d'un espace et d'un autre point. L'espace est indispensable, sans quoi la commande ne fonctionne pas.

L'instruction RUN lance l'installation des dépendances avec le gestionnaire de paquets. L'instruction EXPOSE indique que l'application écoute sur le port 3000. Enfin, CMD définit la commande qui démarre l'application dans le conteneur.

FROM <image-officielle>:<version>
WORKDIR <repertoire-de-travail>
COPY . .
RUN npm install && <commande-de-nettoyage>
EXPOSE 3000
CMD ["<commande-de-demarrage>"]

Regrouper l'installation et le nettoyage

Lorsqu'une commande de nettoyage suit l'installation, il faut l'écrire sur la même ligne RUN, séparée par le symbole du et logique. Ainsi, l'installation et le nettoyage se font en une seule étape, et l'image ne garde qu'une seule couche pour ces opérations.

Une fois le Dockerfile écrit, on construit l'image. On vérifie ensuite qu'elle apparaît dans la liste des images locales, puis on la lance dans un conteneur pour tester l'application dans le navigateur. Si la page s'affiche, la construction a réussi.

  • Construire l'image à partir du Dockerfile.
  • Vérifier qu'elle apparaît dans la liste des images locales.
  • Renommer l'image avant de la publier sur Docker Hub.
  • Lancer un conteneur, puis ouvrir l'application dans le navigateur.

En résumé

Un Dockerfile décrit une image : image de départ, fichiers, installation, port et commande de démarrage. Regrouper l'installation et le nettoyage dans une seule instruction RUN limite les couches inutiles. Un test local dans le navigateur confirme enfin que l'image fonctionne.

Points clés

  • FROM indique l'image officielle de départ, avec sa version.
  • COPY . . copie tout le contenu du dossier courant dans l'image.
  • L'installation et le nettoyage se font sur la même ligne RUN.
  • EXPOSE indique le port 3000 utilisé par l'application.
  • Le test final se fait dans le navigateur, depuis la machine locale.

Questions fréquentes

Pourquoi mettre la commande de nettoyage sur la même ligne que l'installation ?

Lorsque le nettoyage et l'installation sont sur la même ligne, tout est traité en une seule étape. L'image ne garde ainsi qu'une seule couche pour ces opérations.

Que fait l'instruction COPY . . ?

Elle copie tout le contenu du dossier courant dans le répertoire de travail de l'image. Il faut un espace entre les deux points.

Comment vérifier que l'image fonctionne ?

Lancez un conteneur à partir de l'image, puis ouvrez l'application dans le navigateur. Si la page s'affiche, l'image fonctionne correctement.