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 :
Base de données MySQL pour stocker les données.
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 :
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 dedb
.
📥 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
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
Créer le fichier docker-compose.yml
docker-compose.yml
Créez un fichier docker-compose.yml
à la racine de votre projet avec le contenu suivant :
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 conteneurdb
démarre avantwordpress
.ports
: Expose le port 80 du conteneur WordPress sur le port 8000 de la machine hôte.
Accéder à votre site
Rendez-vous sur http://<IP>:8000 pour finaliser la configuration de votre site WordPress.
✅ Commandes Essentielles
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
:
docker-compose.yml
:Services :
db
(MySQL) &wordpress
Volumes : Persistances des données MySQL
Ports : Exposition du port
8000
pour WordPressEnvironnements : 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