docker-compose

📚 Qu'est-ce que Docker Compose ?

Docker Compose est un outil qui permet d'orchestrer plusieurs conteneurs Docker à partir d’un fichier YAML unique (docker-compose.yml). Il simplifie le déploiement, la configuration et la gestion des applications multi-conteneurs en définissant des services (chaque service correspondant à un conteneur spécifique), des réseaux (pour permettre aux conteneurs de communiquer entre eux) et des volumes (pour stocker des données de manière persistante, même si les conteneurs sont arrêtés ou recréés).

Avantages de Docker Compose :

  • Définition de l'infrastructure via un fichier unique.

  • Gestion simplifiée des déploiements multi-conteneurs.

  • Possibilité de reproduire facilement les environnements de développement, test ou production.

🌟 Qu'est-ce qu'un Stack ?

Un stack est un ensemble de services (conteneurs) qui travaillent ensemble pour constituer une application complète. Par exemple, un site WordPress nécessite deux services :

  1. Base de données MySQL pour stocker les données.

  2. Serveur WordPress pour gérer le contenu et l'affichage.

Ces services, bien que distincts, sont interdépendants. Un stack regroupe donc ces conteneurs, les configure et les connecte pour qu'ils fonctionnent ensemble de manière fluide.

🧩 Structure d’un Stack :

docker-compose.yml
services:
  db:
    image: mysql:5.7
  wordpress:
    image: wordpress:latest
    depends_on:
      - db
  • services : Déclare les services du stack.

  • db : Conteneur pour la base de données MySQL.

  • wordpress : Conteneur pour le serveur WordPress, dépendant de db.


📥 Installation de Docker Compose

sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

🧪 Vérifiez l'installation :

docker-compose --version

🛠️ Commandes de Base de Docker Compose

Commande

Description

docker-compose up -d

Lance les services en arrière-plan

docker-compose ps

Affiche le statut des conteneurs

docker-compose logs -f

Montre les logs des services en temps réel

docker-compose stop

Arrête les conteneurs sans les supprimer

docker-compose down

Arrête et supprime les conteneurs, réseaux et volumes associés

docker-compose config

Valide la syntaxe du fichier docker-compose.yml

🌟 Comparaison Docker vs Docker Compose

Fonctionnalité
Commande Docker
Commande Docker Compose

Télécharger une image

docker pull

docker-compose pull

Lancer un conteneur/service

docker run

docker-compose up

Voir les conteneurs actifs

docker ps

docker-compose ps

Afficher les logs

docker logs

docker-compose logs

Arrêter un conteneur/service

docker stop

docker-compose stop

Supprimer un conteneur/service

docker rm

docker-compose down


🚀 Démarrer un Stack Docker Compose

1

Créer le fichier docker-compose.yml

Créez un fichier docker-compose.yml à la racine de votre projet avec le contenu suivant :

docker-compose.yml
services:
  db:
    image: mysql:5.7
    volumes:
      - /data/mysql:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: somewordpress
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress

  wordpress:
    depends_on:
      - db
    image: wordpress:latest
    ports:
      - "8000:80"
    restart: always
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress
      WORDPRESS_DB_NAME: wordpress
  • image : Définit l'image Docker à utiliser pour le conteneur.

  • volumes : Permet de persister les données en les sauvegardant sur la machine hôte.

  • restart: always : Redémarre automatiquement le conteneur en cas de panne.

  • environment : Définit les variables d'environnement utilisées par les services.

  • depends_on : Assure que le conteneur db démarre avant wordpress.

  • ports : Expose le port 80 du conteneur WordPress sur le port 8000 de la machine hôte.

2

Lancer la stack

1

Démarrez les conteneurs :

docker-compose up -d

✅ Cela démarre MySQL et WordPress en arrière-plan.

2

Vérifiez le statut des conteneurs :

docker-compose ps

Vous devriez voir les conteneurs db et wordpress en état running.

3

Accéder à votre site

Rendez-vous sur http://<IP>:8000 pour finaliser la configuration de votre site WordPress.

4

Arrêter et gérer la stack

  • Arrêter les conteneurs :

    docker-compose stop
  • Supprimer les conteneurs et les volumes :

    docker-compose down -v

Commandes Essentielles

Commande
Description

docker-compose up -d

Démarre tous les services en arrière-plan

docker-compose ps

Affiche le statut des conteneurs

docker-compose logs -f

Affiche les logs en temps réel

docker-compose stop

Stoppe les conteneurs

docker-compose down -v

Supprime les conteneurs et les volumes

docker-compose config

Valide la syntaxe du fichier


📖 Récapitulatif des éléments

Fichier docker-compose.yml :

  • Services : db (MySQL) & wordpress

  • Volumes : Persistances des données MySQL

  • Ports : Exposition du port 8000 pour WordPress

  • Environnements : Configuration des bases de données


📌 Concepts Clés

🔗 Service

Un service est une définition d’un conteneur Docker avec sa configuration. Chaque service correspond à un composant de votre application (par exemple, MySQL ou WordPress).

📂 Volume

Les volumes permettent de stocker des données persistantes hors des conteneurs. Ainsi, vos données restent intactes même si les conteneurs sont recréés.

🌐 Réseau

Un réseau Docker est automatiquement créé par Docker Compose pour permettre aux services de communiquer entre eux.

🔄 Redémarrage Automatique

L’option restart: always dans docker-compose.yml redémarre un conteneur automatiquement en cas de panne.

Last updated