> ## Content Index
> Fetch the complete content index at: https://kmartin.io/llms.txt
> Use this file to discover other available public pages before exploring further.

# Comprendre et maîtriser Docker Compose 🐳
- URL: https://kmartin.io/comprendre-et-maitriser-docker-compose/
- Published: 2026-01-09T10:36:23.000Z
- Updated: 2026-01-09T10:36:23.000Z
- Description: 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 🚀
- Author: Kévin Martin
- Tags: Articles, Déploiement, Docker

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](https://kmartin.io/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 :

```yaml
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 :

```yaml
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.

```yaml
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 :

```bash
docker compose up -d

```

Arrêter les services :

```bash
docker compose down

```

Voir les logs :

```bash
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](https://kmartin.io/portainer-sans-prise-de-tete-installation-et-mises-a-jour-propres/)

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