Les images nginx et hello-world que vous avez utilisées existaient déjà, prêtes à l'emploi, sur Docker Hub. Mais votre propre application, elle, n'existe nulle part encore sous forme d'image. Il faut la construire vous-même, et le point de départ de cette construction s'appelle un Dockerfile.

Ce qu'est un Dockerfile

Un Dockerfile est un simple fichier texte, sans extension particulière (il s'appelle littéralement Dockerfile, sans point ni suffixe), qui contient une liste d'instructions. Chaque instruction décrit une étape de la construction d'une image : quelle base utiliser, quels fichiers copier, quelles commandes exécuter, comment démarrer l'application une fois le conteneur lancé.

Docker lit ce fichier de haut en bas, et exécute chaque instruction dans l'ordre pour construire l'image, étape par étape.

Une analogie, avec sa limite

Un Dockerfile ressemble à une recette de cuisine : une liste d'étapes précises, dans un ordre précis, qui produit toujours le même résultat si elle est suivie à l'identique. La comparaison s'arrête là : contrairement à une recette suivie à la main, un Dockerfile est exécuté automatiquement par Docker, en quelques secondes, et de façon parfaitement reproductible d'un ordinateur à l'autre.

Mini-Carnet, l'application que vous allez dockeriser

Pour rester concret, les guides suivants construisent ensemble le Dockerfile de Mini-Carnet, l'application annoncée au guide 1 : une petite page web qui affiche un message de bienvenue et compte les visites. Voici les deux fichiers qui la composent, écrits en JavaScript avec Node.js, un environnement d'exécution très répandu. Vous n'avez pas besoin de savoir programmer pour suivre ce parcours : ces fichiers vous sont donnés tels quels, l'objectif reste Docker, pas l'apprentissage de Node.js.

Retenez simplement ceci : cette application a besoin de Node.js pour s'exécuter, elle dépend d'une bibliothèque externe appelée express, elle écoute sur un port défini par la variable PORT, et elle affiche un nom personnalisable via la variable APP_NAME. C'est exactement ce que votre futur Dockerfile va devoir prendre en compte.

La structure générale d'un Dockerfile

Sans encore entrer dans le détail de chaque instruction, un Dockerfile suit presque toujours la même logique : partir d'une base existante, préparer un dossier de travail, copier les fichiers nécessaires, installer ce qui manque, puis indiquer comment démarrer l'application. Les cinq guides suivants détaillent chacune de ces étapes, une par une, en les appliquant directement à Mini-Carnet.

Vérifiez que vous avez compris

Un Dockerfile est-il exécuté une seule fois pour créer un conteneur, ou sert-il à créer l'image dont proviendront ensuite un ou plusieurs conteneurs ?

Un Dockerfile sert à construire une image, pas directement un conteneur. Une fois l'image construite, vous pouvez ensuite créer autant de conteneurs que nécessaire à partir d'elle avec docker run, exactement comme vous l'avez fait avec l'image nginx, sans jamais rejouer le Dockerfile pour chaque nouveau conteneur.