Docker Compose permet de définir et lancer plusieurs services Docker à partir d’un seul fichier docker-compose.yml.
Il est utilisé dès qu’un projet comporte plusieurs composants :
- API
- base de données
- Redis
- Airflow
- service batch
- etc.
Exemple#
version: "3.9"
services:
api:
build: .
ports:
- "8000:8000"
volumes:
- ./src:/app/src
env_file:
- .env
depends_on:
- db
db:
image: postgres:15
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
postgres_data:
RĂ´le de Compose#
Compose orchestre :
- services
- réseaux (automatiquement créés)
- volumes persistants
- variables d’environnement
- dépendances entre services
Chaque service s’exécute dans son propre conteneur, mais sur un réseau commun.
Commandes principales#
# crée et démarre les conteneurs (mode détaché)
docker compose up -d
# arrête et supprime les conteneurs et le réseau
docker compose down
# construit (ou reconstruit) les images
docker compose build
up -d: lance l’application complète en arrière-plan.down: permet de repartir d’un environnement propre (ne supprime pas les volumes sauf option--volumes).build: nécessaire après modification du Dockerfile ou des dépendances.
Compose devient l’interface principale pour gérer l’application complète.
Quand utiliser Compose ?#
- Projet multi-services
- Environnement local reproductible
- Simulation proche de la production
- Collaboration en équipe
Pour un simple conteneur isolé, docker run peut suffire.
Dès que l’architecture devient structurée, Compose est recommandé.