Projet : dockeriser Mini-Carnet de A à Z
Ce guide n'explique presque rien de nouveau. Il vous demande de mobiliser, seul, tout ce que vous avez appris depuis le guide 10.
Créez un tout nouveau dossier vide, par exemple projet-mini-carnet, en dehors de celui utilisé jusqu'ici. Vous allez y reconstruire Mini-Carnet vous-même, étape par étape, en vous limitant à ce que vous savez déjà. Chaque étape propose un indice ; la solution complète n'arrive qu'à la toute fin du guide.
Étape 1 : comprendre ce que l'application attend de vous
Recréez les deux fichiers server.js et package.json tels que présentés au guide 10, puis à nouveau modifiés au guide 24 pour utiliser Redis. Avant d'aller plus loin, posez-vous une seule question : quelles informations cette application a-t-elle besoin de recevoir de l'extérieur pour fonctionner ? Vous devriez en trouver trois.
Cherchez du côté de process.env dans server.js. Trois valeurs sont lues ainsi, chacune avec une valeur par défaut si elle est absente.
Étape 2 : écrire le Dockerfile
Écrivez un Dockerfile complet pour cette application, sans le recopier depuis un guide précédent. Vous devriez arriver à six instructions.
L'ordre compte pour le cache de build, souvenez-vous du guide 12 : copiez d'abord ce qui décrit les dépendances, installez-les, puis copiez le reste. Une image de base légère pour Node.js a été utilisée tout au long de ce parcours.
Étapes 3 et 4 : construire l'image, puis lancer un conteneur
Construisez l'image avec un nom de votre choix, puis lancez un conteneur à partir d'elle. Vérifiez avec docker ps qu'il tourne bien.
Deux commandes du guide 15 suffisent ici : une pour construire, une pour lancer en arrière-plan.
Étapes 5 et 6 : exposer le port et personnaliser le nom
Rendez l'application accessible sur le port 4000 de votre ordinateur, tout en gardant le port 3000 à l'intérieur du conteneur. Donnez-lui aussi un nom d'affichage personnalisé, par exemple le vôtre.
Deux options de docker run, vues aux guides 16 et 17, permettent chacune l'une de ces deux choses.
Vérifiez vous-même votre résultat
Avant de lire la solution ci-dessous, ouvrez http://localhost:4000 dans votre navigateur (puisque vous avez choisi ce port à l'étape précédente). Si la page affiche votre nom personnalisé et un compteur qui semble fonctionner, même s'il ne persiste pas encore (ce sera l'objet du prochain guide), vous avez réussi cette première partie du projet.
Dockerfile :
Vérifiez que vous avez compris
Si votre Dockerfile copiait . . avant RUN npm install, plutôt que package.json seul avant, la construction fonctionnerait-elle quand même ?
Oui, le résultat final serait identique et fonctionnel. La différence n'est pas fonctionnelle mais liée à la performance des reconstructions futures : avec cet ordre inversé, toute modification de server.js, même sans toucher à package.json, invaliderait le cache de RUN npm install et forcerait une réinstallation complète des dépendances à chaque fois, contrairement à l'ordre recommandé au guide 12.