Vérifiez que votre dossier mini-carnet contient bien cinq fichiers : server.js, package.json, Dockerfile, .dockerignore, et que le Dockerfile reprend exactement les cinq instructions construites depuis le guide 11.

Construire l'image avec docker build

Ouvrez un terminal, placez-vous dans le dossier mini-carnet (celui qui contient le Dockerfile), et tapez :

Décomposons cette commande :

ÉlémentRôle
docker buildConstruit une image à partir d'un Dockerfile.
-t mini-carnetDonne un nom (« tag ») à l'image construite, ici mini-carnet, pour la retrouver facilement ensuite.
.Le contexte de construction : le dossier où chercher le Dockerfile et les fichiers à copier. Ici, le dossier courant.

Chaque ligne affichée pendant la construction correspond à une instruction de votre Dockerfile, exécutée dans l'ordre. Vous retrouverez ce même nom, mini-carnet, en tapant docker images, exactement comme nginx ou hello-world plus tôt dans ce parcours.

Lancer un conteneur à partir de votre image

Une image construite s'utilise exactement comme une image officielle. Lancez un conteneur avec la commande apprise au guide 8 :

Ouvrez http://localhost:3000 dans votre navigateur. Vous devriez voir « Bienvenue sur Mini-Carnet 👋 » suivi du numéro de la visite en cours. Rafraîchissez la page plusieurs fois : le compteur augmente, la preuve que votre propre code, construit en image puis lancé en conteneur, fonctionne réellement.

Ce que vous venez de faire, en résumé

Vous avez transformé du code source, sur votre ordinateur, en une image portable et reproductible, puis en un conteneur réellement fonctionnel. C'est exactement le mécanisme que vous utiliserez pour n'importe quelle application, bien au-delà de Mini-Carnet.

Vérifiez que vous avez compris

Vous modifiez le texte affiché dans server.js, mais vous ne relancez ni docker build, ni un nouveau conteneur. Le conteneur mon-carnet, déjà en cours d'exécution, va-t-il afficher cette modification si vous rafraîchissez la page ?

Non. Comme vu au guide 13, le code exécuté par un conteneur est celui qui était présent dans l'image au moment de sa construction. Une modification de server.js sur votre ordinateur, après coup, n'a aucun effet tant qu'une nouvelle image n'a pas été construite avec docker build, et qu'un nouveau conteneur n'a pas été lancé à partir de cette nouvelle image.