Créer le premier Compose
Faire grandir un unique fichier Compose à partir d’un seul service.
Dans ce chapitre : 6 étapes et 18 preuves de validation.
Étape 31 — Comprendre la frontière Dockerfile / Compose
Section intitulée « Étape 31 — Comprendre la frontière Dockerfile / Compose »Objectif. Tu sauras pourquoi les deux fichiers sont nécessaires.
État du projet avant cette étape. L’image mariadb:inception existe et aucun container de projet ne tourne.
Comprendre le changement
Section intitulée « Comprendre le changement »Le Dockerfile explique comment fabriquer une image. Compose expliquera quelles images fabriquer, avec quelles valeurs, quels volumes et quel réseau, puis créera leurs containers.
Faire une seule chose
Section intitulée « Faire une seule chose »Dessine deux colonnes : Dockerfile = construction de l’image ; Compose = configuration et cycle de vie des services. Place FROM et RUN à gauche, volumes et networks à droite.
Prouver que c’est correct
Section intitulée « Prouver que c’est correct »Question de soutenance — Compose remplace-t-il un Dockerfile ?
Non. Le Dockerfile construit une image ; Compose indique quelles images construire et comment lancer leurs containers.
Étape 32 — Créer la racine services
Section intitulée « Étape 32 — Créer la racine services »Objectif. Tu écriras le plus petit fichier Compose valide conceptuellement.
État du projet avant cette étape. srcs/docker-compose.yml est vide.
Comprendre le changement
Section intitulée « Comprendre le changement »services est la clé qui contiendra les programmes gérés. On ne déclare encore aucun volume, réseau ou secret.
Faire une seule chose
Section intitulée « Faire une seule chose »Écris une seule ligne, complètement à gauche. YAML utilise des espaces et une indentation significative.
Fichiers ou emplacements concernés
srcs/docker-compose.yml
services:Ce que fait chaque partie
- services ouvre la table des services Compose.
- Le deux-points indique qu’un contenu imbriqué arrivera ensuite.
Le fichier contient uniquement services:.
Si cela échoue
N’utilise aucune tabulation dans un fichier YAML.
Prouver que c’est correct
Section intitulée « Prouver que c’est correct »Question de soutenance — Compose remplace-t-il un Dockerfile ?
Non. Le Dockerfile construit une image ; Compose indique quelles images construire et comment lancer leurs containers.
Étape 33 — Déclarer le nom du premier service
Section intitulée « Étape 33 — Déclarer le nom du premier service »Objectif. Compose connaîtra MariaDB sans encore savoir la construire.
État du projet avant cette étape. Le fichier contient services: sans enfant.
Comprendre le changement
Section intitulée « Comprendre le changement »mariadb est le nom DNS et logique du service. image fixe le nom de l’image utilisée. Comme l’image existe déjà, ce premier bloc peut la référencer avant d’ajouter build.
Faire une seule chose
Section intitulée « Faire une seule chose »Ajoute mariadb puis image avec deux niveaux d’indentation.
Fichiers ou emplacements concernés
srcs/docker-compose.yml
services:
mariadb:
image: mariadb:inceptionCe que fait chaque partie
- Deux espaces placent mariadb sous services.
- Quatre espaces placent image sous mariadb.
- mariadb est le service ; mariadb:inception est l’image.
Un seul service nommé mariadb référence mariadb:inception.
Si cela échoue
Une indentation incohérente transforme la structure ; compare exactement les espaces.
Prouver que c’est correct
Section intitulée « Prouver que c’est correct »Question de soutenance — Compose remplace-t-il un Dockerfile ?
Non. Le Dockerfile construit une image ; Compose indique quelles images construire et comment lancer leurs containers.
Étape 34 — Ajouter le chemin du Dockerfile
Section intitulée « Étape 34 — Ajouter le chemin du Dockerfile »Objectif. Compose pourra reconstruire l’image au lieu de dépendre d’un build manuel.
État du projet avant cette étape. Compose connaît le nom de l’image mais pas sa recette.
Comprendre le changement
Section intitulée « Comprendre le changement »build.context indique le dossier envoyé au builder. dockerfile indique le nom de la recette dans ce contexte. Le chemin est relatif au dossier srcs qui contient Compose.
Faire une seule chose
Section intitulée « Faire une seule chose »Ajoute seulement le bloc build sous image.
Fichiers ou emplacements concernés
srcs/docker-compose.yml
build:
context: ./requirements/mariadb
dockerfile: DockerfileCe que fait chaque partie
- build ouvre la configuration de construction.
- context est relatif à srcs.
- dockerfile désigne le fichier à lire dans ce contexte.
Le service possède maintenant image et build.
Si cela échoue
N’écris pas srcs/requirements ici : depuis le fichier Compose, le bon chemin commence par ./requirements.
Prouver que c’est correct
Section intitulée « Prouver que c’est correct »Question de soutenance — Compose remplace-t-il un Dockerfile ?
Non. Le Dockerfile construit une image ; Compose indique quelles images construire et comment lancer leurs containers.
Étape 35 — Faire lire le YAML par Compose
Section intitulée « Étape 35 — Faire lire le YAML par Compose »Objectif. Tu vérifieras le plan sans lancer de container.
État du projet avant cette étape. Le fichier décrit un service et son build.
Comprendre le changement
Section intitulée « Comprendre le changement »docker compose config parse le YAML et affiche le modèle normalisé. Cette commande ne démarre rien. Elle doit devenir ton premier réflexe après chaque modification Compose.
Faire une seule chose
Section intitulée « Faire une seule chose »Valide le fichier puis vérifie que docker ps reste vide pour le projet.
docker compose -f srcs/docker-compose.yml config
docker ps --filter name=mariadbCe que fait chaque partie
- -f indique le fichier situé sous srcs.
- config valide et normalise.
- docker ps confirme qu’aucun container n’a été créé.
La sortie normalisée contient mariadb, image et build ; aucun container n’est listé.
Si cela échoue
Une erreur de parsing indique la ligne YAML et vient souvent de l’indentation.
Prouver que c’est correct
Section intitulée « Prouver que c’est correct »Question de soutenance — Compose remplace-t-il un Dockerfile ?
Non. Le Dockerfile construit une image ; Compose indique quelles images construire et comment lancer leurs containers.
Étape 36 — Construire avec Compose
Section intitulée « Étape 36 — Construire avec Compose »Objectif. Tu remplaceras la commande docker build manuelle par le plan du projet.
État du projet avant cette étape. Compose sait où se trouve le Dockerfile MariaDB.
Comprendre le changement
Section intitulée « Comprendre le changement »compose build mariadb suit exactement le contexte déclaré. La commande ne démarre toujours pas de container.
Faire une seule chose
Section intitulée « Faire une seule chose »Demande à Compose de construire seulement MariaDB puis affiche l’image associée.
docker compose -f srcs/docker-compose.yml build mariadb
docker compose -f srcs/docker-compose.yml imagesCe que fait chaque partie
- build mariadb limite la construction au premier service.
- images affiche l’association service/image connue de Compose.
Le build réussit et l’image mariadb:inception est associée au service.
Si cela échoue
context not found signifie que build.context ne correspond pas au chemin depuis srcs.
Prouver que c’est correct
Section intitulée « Prouver que c’est correct »Question de soutenance — Compose remplace-t-il un Dockerfile ?
Non. Le Dockerfile construit une image ; Compose indique quelles images construire et comment lancer leurs containers.