Aller au contenu

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.

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.

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.

Preuves de validation 0 / 3

Une case correspond à une preuve observée ou expliquée, pas simplement à une commande copiée.

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.

Objectif. Tu écriras le plus petit fichier Compose valide conceptuellement.

État du projet avant cette étape. srcs/docker-compose.yml est vide.

services est la clé qui contiendra les programmes gérés. On ne déclare encore aucun volume, réseau ou secret.

Écris une seule ligne, complètement à gauche. YAML utilise des espaces et une indentation significative.

Fichiers ou emplacements concernés

  • srcs/docker-compose.yml
À ÉCRIRE DANSFichier srcs/docker-compose.yml · première ligne
services:
Ce que fait chaque partie
  1. services ouvre la table des services Compose.
  2. Le deux-points indique qu’un contenu imbriqué arrivera ensuite.
Résultat attendu

Le fichier contient uniquement services:.

Si cela échoue

N’utilise aucune tabulation dans un fichier YAML.

Preuves de validation 0 / 3

Une case correspond à une preuve observée ou expliquée, pas simplement à une commande copiée.

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.

Objectif. Compose connaîtra MariaDB sans encore savoir la construire.

État du projet avant cette étape. Le fichier contient services: sans enfant.

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.

Ajoute mariadb puis image avec deux niveaux d’indentation.

Fichiers ou emplacements concernés

  • srcs/docker-compose.yml
À ÉCRIRE DANSFichier srcs/docker-compose.yml · contenu complet actuel
services:
  mariadb:
    image: mariadb:inception
Ce que fait chaque partie
  1. Deux espaces placent mariadb sous services.
  2. Quatre espaces placent image sous mariadb.
  3. mariadb est le service ; mariadb:inception est l’image.
Résultat attendu

Un seul service nommé mariadb référence mariadb:inception.

Si cela échoue

Une indentation incohérente transforme la structure ; compare exactement les espaces.

Preuves de validation 0 / 3

Une case correspond à une preuve observée ou expliquée, pas simplement à une commande copiée.

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.

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.

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.

Ajoute seulement le bloc build sous image.

Fichiers ou emplacements concernés

  • srcs/docker-compose.yml
À ÉCRIRE DANSFichier srcs/docker-compose.yml · sous image
    build:
      context: ./requirements/mariadb
      dockerfile: Dockerfile
Ce que fait chaque partie
  1. build ouvre la configuration de construction.
  2. context est relatif à srcs.
  3. dockerfile désigne le fichier à lire dans ce contexte.
Résultat attendu

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.

Preuves de validation 0 / 3

Une case correspond à une preuve observée ou expliquée, pas simplement à une commande copiée.

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.

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.

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.

Valide le fichier puis vérifie que docker ps reste vide pour le projet.

À EXÉCUTER DANSDans la VM · racine du repository
docker compose -f srcs/docker-compose.yml config
docker ps --filter name=mariadb
Ce que fait chaque partie
  1. -f indique le fichier situé sous srcs.
  2. config valide et normalise.
  3. docker ps confirme qu’aucun container n’a été créé.
Résultat attendu

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.

Preuves de validation 0 / 3

Une case correspond à une preuve observée ou expliquée, pas simplement à une commande copiée.

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.

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.

compose build mariadb suit exactement le contexte déclaré. La commande ne démarre toujours pas de container.

Demande à Compose de construire seulement MariaDB puis affiche l’image associée.

À EXÉCUTER DANSDans la VM · racine du repository
docker compose -f srcs/docker-compose.yml build mariadb
docker compose -f srcs/docker-compose.yml images
Ce que fait chaque partie
  1. build mariadb limite la construction au premier service.
  2. images affiche l’association service/image connue de Compose.
Résultat attendu

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.

Preuves de validation 0 / 3

Une case correspond à une preuve observée ou expliquée, pas simplement à une commande copiée.

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.