‫Alors, que faisons-nous avec ce fichier?
‫Eh bien, sortons. Nous allons voir dans ce répertoire que nous avons juste ce fichier.
‫C'est à peine un k en taille.
‫Il n'y a évidemment rien d'autre dans le texte que le texte, mais ce sont les instructions pour
‫construire notre image.
‫La commande from, lorsque je construis cette image, va réellement extraire cette image Debian Jessie de Docker
‫Hub vers mon cache local. Et ensuite, il va exécuter ligne par ligne
‫chacune de ces strophes à l'intérieur de mon moteur de menu fixe et mettre en cache
‫chacune de ces couches.
‫Tapons l’image docker build et nous allons la taguer.
‫Rappelez-vous, c'est le nom que nous allons donner à une image.
‫Étant donné que je vais utiliser cette image uniquement localement, je n'ai pas à utiliser mon nom de compte Docker Hub. Je peux l'appeler comme je
‫veux.
‫Je vais l'appeler nginx personnalisé, et je vais mettre un point ici, qui dit en gros, construisez le
‫fichier docker dans ce répertoire. Et vous verrez au fil des
‫étapes que chaque étape est une ligne du fichier de dock qui s’exécute à l’intérieur de cette image pendant qu’elle la construit.
‫Et puis il y a un petit hachage à la fin qui est en réalité le hachage qu'il
‫garde dans le cache de construction afin que la prochaine fois que nous construisions cette chose, si cette ligne n'a pas
‫changé dans le fichier docker, elle ne sera pas réexécutée.
‫C’est l’un des éléments magiques de la raison pour laquelle Docker rend le déploiement et la construction de logiciels si rapides qu’il
‫est suffisamment intelligent pour mettre en cache les étapes de la construction.
‫Ainsi, bien souvent, après avoir créé une image pour la première fois et que vous modifiez simplement
‫votre code source personnalisé sans modifier nécessairement l’application en elle-même, tout ce processus
‫d’installation a déjà eu lieu.
‫Donc, vous aurez des temps construits très courts.
‫Ok, alors maintenant nous avons fini de construire. Cela a pris environ une minute.
‫Mais si je retourne dans ce dossier? Je vais ajouter un port exposé supplémentaire.
‫Par exemple, je vais juste faire 8080.
‫Cela ne signifie pas pour autant que nginx soit suffisamment intelligent pour savoir que j'ouvre ce port ou qu'il communique
‫de quelque manière que ce soit avec nginx.
‫C'est juste moi permettant au conteneur de recevoir des paquets sur ce port.
‫Juste pour être sûr, faisons une image de docker. Nous verrons tout en haut qu'il l'a automatiquement étiquetée comme étant
‫la dernière, non?
‫Parce que nous l'appelons seulement le nom du référentiel.
‫En fait, nous ne lui avons pas donné le nom de la balise du côlon.
‫Alors reconstruisons-le.
‫Wow, c'était rapide, non?
‫Cela ne nous a pris que quelques secondes. Et vous remarquerez qu'à chaque étape, il utilisera le cache. À partir de l'étape 2,
‫l'utilisation
‫du cache, du cache 3 et du cache 4. Sur 5, il reconnaît à l'étape 5 que cette
‫ligne est différente.
‫Donc, il exécute cela dans le conteneur. Et ensuite, à l'étape 6, il doit réexécuter cette
‫ligne car à la minute où une ligne change, chaque ligne suivante doit maintenant être reconstruite.
‫Cela soulève la question de la commande de vos lignes dans votre fichier Docker. Parce que, si vous obtenez des choses en désordre,
‫par exemple, si vous
‫avez copié le code dans ... Disons que vous construisez un site web. Si vous copiez le code
‫logiciel que vous créez au tout début du fichier, chaque fois que vous modifiez un fichier source et
‫que vous le reconstruisez, il faudra à nouveau créer l'intégralité du fichier Dockerfile.
‫Il est donc primordial pour votre santé mentale et votre temps de garder les éléments qui changent le moins au
‫sommet de votre fichier Docker, puis ceux qui se modifient le plus au bas de votre fichier
‫Docker.