Utiliser les Profiles avec Docker Compose
Avec Docker Compose, il arrive souvent d'avoir plusieurs services dans un même fichier docker-compose.yml : application, base de données, serveur web, monitoring, etc.
Le problème, c’est que nous n’avons pas toujours besoin de tout démarrer, ni arrêter.
Découvrons dans cet article comment utiliser les profiles Docker Compose pour activer certains services uniquement lorsque nous en avons besoin.
Introduction
Docker Compose permet de définir une stack complète dans un fichier YAML, puis de la démarrer avec une seule commande. C’est très pratique pour le développement local, les environnements de test ou même certaines petites stacks internes.
Prenons par exemple ce docker-compose.yml :
services:
web:
image: nginx:alpine
db:
image: postgres:16
prometheus:
image: prom/prometheus
grafana:
image: grafana/grafanaDans cet exemple, tous les services vont démarrer avec cette commande :
docker compose up -dPourtant, nous n’avons pas forcément besoin de nginx, de grafana, ou de prometheus à chaque lancement.
C’est là que les profiles deviennent intéressants.
À quoi servent les profiles ?
Les profiles avec Docker Compose permettent de cibler uniquement certains services.
Cela permet par exemple de garder un seul fichier docker-compose.yml, tout en ayant plusieurs usages.
Utilisation
En ajoutant le bloc profiles dans la définition d'un service, comme dans cet exemple :
profiles:
- webIl est possible de cibler uniquement les conteneurs ayant le profil web avec l'option --profile, comme dans cet exemple :
docker compose --profile web up -dExemple
Reprenons notre docker-compose.yml, si l'on ajoute le mot-clé profiles sur nos conteneurs comme suivant :
services:
web:
image: nginx:alpine
profiles:
- web
db:
image: postgres:16
profiles:
- db
prometheus:
image: prom/prometheus
profiles:
- monitoring
grafana:
image: grafana/grafana
profiles:
- monitoringLa commande suivante permettra d'arrêter uniquement les conteneurs grafana et prometheus :
docker compose --profile monitoring stop Profiles multiples
Il est possible d’activer plusieurs profiles en répétant l’option --profile :
docker compose \
--profile monitoring \
--profile web \
up -dDans ce cas, les 3 services seront démarrés web, prometheus et grafana.
Utiliser la variable d'environnement
Les profiles peuvent aussi être activés avec la variable d’environnement COMPOSE_PROFILES.
Pour activer un seul profile :
COMPOSE_PROFILES=monitoring docker compose up -dPour en activer plusieurs, séparez leurs noms par une virgule :
COMPOSE_PROFILES=debug,dev docker compose up -dCette méthode est pratique dans un script ou une pipeline CI/CD.