« Une application = un conteneur. »
En réalité, une application réelle est un ensemble de services : un serveur web, une base de données, un cache… Les lancer un par un, à la main, avec les bons ports et réseaux, devient vite ingérable. Docker Compose décrit tout ça dans un seul fichier — et c’est aussi ta première marche vers Kubernetes.
À la fin de ce module, tu sauras…
- Décrire plusieurs services dans un fichier compose.yaml
- Lancer et arrêter toute une application d’une seule commande
- Comprendre le réseau privé automatique entre services
- Voir en quoi Compose annonce Kubernetes
01Deux services, un fichier
Décrire SORIA Web + une base de données
Manipulemkdir ~/soria-stack && cd ~/soria-stack
cat > compose.yaml <<'EOF'
services:
web:
image: nginx:1.27-alpine
ports:
- "8080:80"
db:
image: postgres:17-alpine
environment:
POSTGRES_PASSWORD: exemple
volumes:
- db-data:/var/lib/postgresql/data
volumes:
db-data:
EOFComprends déclaratif, pas impératif
Au lieu d’enchaîner des commandes docker run (impératif), tu décris l’état voulu : quels services, quelles images, quels réseaux. C’est un changement de paradigme majeur — exactement celui de Kubernetes.
02Tout lancer d’un coup
Une commande pour toute la pile
Manipuledocker compose up -d
docker compose psObserveNAME IMAGE STATUS PORTS
soria-stack-web-1 nginx:1.27-alpine Up 0.0.0.0:8080->80/tcp
soria-stack-db-1 postgres:17-alpine Updocker compose down arrête et supprime tout aussi proprement.Comprends le cycle de vie d’une pile
compose up -d crée réseaux, volumes et conteneurs déclarés ; compose down défait le tout (en gardant les volumes nommés). Tu gères une application entière comme une unité, plus des conteneurs isolés.
03Le réseau privé automatique
Les services se parlent par leur nom
Manipuledocker compose exec web ping -c 2 dbObservePING db (172.20.0.2): 56 data bytes
64 bytes from 172.20.0.2 ...Comprends la découverte de services
Compose place les services d’une même pile dans un réseau privé et leur donne un nom DNS interne (web, db). Une application se connecte à sa base via db:5432, pas une IP en dur. Cette « découverte de services » par nom est exactement ce que fait Kubernetes — en plus grand.
→Le pont vers Kubernetes
Garde bien ces trois idées de Compose en tête — tu les retrouveras à la phase Kubernetes, à plus grande échelle :
| Idée (Compose) | Équivalent (Kubernetes) |
|---|---|
| décrire l’état voulu (YAML) | manifestes déclaratifs |
| plusieurs services ensemble | plusieurs Pods / Deployments |
| se parler par nom (web → db) | Services & DNS interne |
Cadrage Compose est parfait pour un serveur. Quand il faudra répartir sur plusieurs machines, gérer la montée en charge et l’auto-réparation, on passera à Kubernetes (Phase 5). Compose reste l’outil idéal pour développer et comprendre — il t’a préparé le terrain.
✓Ce que tu retiens
Docker Compose décrit une application multi-services dans un fichier YAML déclaratif, la lance d’une commande, et met les services dans un réseau privé où ils se joignent par leur nom. Ces trois idées sont les fondations de Kubernetes.
La pile SORIA
À faire
- Écris un
compose.yamlavec ton image SORIA Web (au lieu de nginx brut) + une base Postgres. - Lance la pile, vérifie les deux services avec
docker compose ps. - Depuis
web, joinsdbpar son nom. - Fais
downpuisupà nouveau : prouve que les données de la base ont survécu (volume nommé). - Cite les trois idées de Compose que Kubernetes reprend.
?Auto-évaluation
1. Qu’est-ce qu’un fichier compose « déclaratif » décrit ?
L’état voulu de l’application : les services, leurs images, ports, volumes et réseaux — pas une suite de commandes.
2. Comment deux services d’une même pile se joignent-ils ?
Par leur nom, via le réseau privé et le DNS interne créés par Compose (ex. db:5432), sans IP en dur.
3. Cite une limite de Compose que Kubernetes lève.
Compose gère un seul serveur ; Kubernetes répartit sur plusieurs machines, avec montée en charge et auto-réparation.