Comprendre et maütriser Docker Compose 🐳

DĂ©couvre Docker Compose pas Ă  pas : comprends sa logique, structure tes projets, gĂšre les volumes et les rĂ©seaux, et lance tes services facilement. Ce guide te prĂ©pare Ă  dĂ©ployer tes applications sereinement et Ă  passer ensuite Ă  Portainer sans galĂšre 🚀

Docker Compose Logo

Si tu utilises Docker depuis quelque temps, tu as sĂ»rement dĂ©jĂ  vu passer des fichiers docker-compose.yml. Parfois copiĂ©s-collĂ©s, parfois modifiĂ©s Ă  l’aveugle, ils finissent souvent par fonctionner
 sans qu’on sache vraiment pourquoi.

Dans cet article, on va prendre le temps de comprendre Docker Compose, son rĂŽle, sa logique, et surtout comment l’utiliser proprement. L’objectif n’est pas de tout automatiser Ă  l’extrĂȘme, mais de poser des bases solides pour dĂ©ployer et maintenir des applications sereinement.

👉 Si Docker n’est pas encore installĂ© sur ton serveur, je te conseille de commencer par ce guide : Installer Docker facilement sur Linux


Docker vs Docker Compose : quelle différence ?

Docker permet de lancer des containers un par un Ă  l’aide de commandes parfois longues et peu lisibles. C’est trĂšs bien pour tester rapidement une image, mais dĂšs que ton application dĂ©pend de plusieurs services, ça devient vite compliquĂ©.

Docker Compose arrive exactement Ă  ce moment-lĂ . Il permet de dĂ©crire l’ensemble d’une application (services, rĂ©seaux, volumes) dans un seul fichier YAML. Ce fichier devient alors la source de vĂ©ritĂ© de ton projet.

En résumé :

  • Docker lance des containers
  • Docker Compose dĂ©crit et orchestre une application complĂšte

Pourquoi utiliser Docker Compose ?

Docker Compose apporte plusieurs avantages concrets :

  • Une configuration claire et lisible
  • Une reproductibilitĂ© parfaite entre environnements
  • Un dĂ©marrage et un arrĂȘt de l’application en une seule commande
  • Une base idĂ©ale pour Ă©voluer vers Portainer plus tard

C’est aussi un excellent moyen de documenter ton infrastructure sans Ă©crire une seule ligne de documentation supplĂ©mentaire.


Structure d’un projet Docker Compose

Avant mĂȘme d’écrire du YAML, il est important d’organiser ton projet correctement.

Voici une structure simple et efficace :

mon-projet/
├── docker-compose.yml
├── data/
│   └── db/
└── app/

Cette organisation permet de séparer clairement :

  • la configuration
  • les donnĂ©es persistantes
  • le code applicatif

C’est une bonne habitude Ă  prendre dĂšs le dĂ©part.


Anatomie d’un fichier docker-compose.yml

Entrons maintenant dans le cƓur du sujet.

Un fichier Docker Compose commence toujours par une version et une liste de services :

version: "3.9"

services:
  web:
    image: nginx:alpine
    ports:
      - "8080:80"

Ici, on dĂ©crit un service nommĂ© web basĂ© sur l’image NGINX. Docker Compose se charge du reste.


Les services

Un service représente un container (ou un groupe de containers identiques). Chaque service peut définir :

  • une image ou un Dockerfile
  • des ports
  • des volumes
  • des variables d’environnement

Exemple un peu plus complet :

services:
  web:
    image: nginx:alpine
    ports:
      - "8080:80"
    volumes:
      - ./app:/usr/share/nginx/html

Docker Compose lit ce fichier et crée exactement ce que tu décris. Ni plus, ni moins.


Les volumes : ne pas perdre ses données

Les volumes permettent de conserver les donnĂ©es mĂȘme si le container est recréé. C’est indispensable pour les bases de donnĂ©es, mais aussi trĂšs pratique pour le dĂ©veloppement.

volumes:
  db-data:

services:
  db:
    image: mariadb:10.11
    volumes:
      - db-data:/var/lib/mysql

Sans volume, chaque redémarrage serait une remise à zéro complÚte. Autant dire une trÚs mauvaise idée en production.


Les réseaux : communication entre services

Bonne nouvelle : Docker Compose crée automatiquement un réseau pour ton projet. Les services peuvent donc communiquer entre eux en utilisant leur nom.

Par exemple, ton service web peut se connecter à db simplement en utilisant le hostname db. Pas besoin de configuration réseau compliquée.


Lancer et gérer un projet Docker Compose

Une fois ton fichier prĂȘt, tout se joue dans le terminal.

Démarrer le projet :

docker compose up -d

ArrĂȘter les services :

docker compose down

Voir les logs :

docker compose logs -f

Ces commandes deviendront vite des réflexes.


Erreurs fréquentes à éviter

MĂȘme avec Docker Compose, certaines erreurs reviennent souvent :

  • utiliser latest partout sans contrĂŽle
  • oublier les volumes pour les donnĂ©es importantes
  • modifier un container Ă  la main au lieu du fichier YAML

👉 rùgle simple : si ce n’est pas dans le docker-compose.yml, ça n’existe pas.


Conclusion

Docker Compose est un outil fondamental dĂšs que l’on dĂ©passe un simple container. Il t’oblige Ă  structurer, comprendre et documenter ton infrastructure, tout en restant simple Ă  utiliser.

Dans le prochain article, on passera Ă  la pratique avec le dĂ©ploiement d’une application complĂšte, puis nous verrons comment gĂ©rer exactement la mĂȘme chose via Portainer.

👉 En attendant, si ce n’est pas dĂ©jĂ  fait, tu peux lire : Portainer sans prise de tĂȘte : installation et mises Ă  jour propres

Prendre le temps de comprendre Docker Compose maintenant, c’est gagner Ă©normĂ©ment de sĂ©rĂ©nitĂ© pour la suite 🚀