Docker Compose
Docker Compose est un outil qui permet de définir et d’exécuter des applications Docker multi-conteneurs. Avec Compose, vous utilisez un fichier YAML pour configurer les services de votre application. Ensuite, avec une seule commande, vous créez et démarrez tous les services de votre configuration.
Voici quelques clés importantes que vous pouvez utiliser dans votre fichier docker-compose.yaml
:
Labels
Les labels permettent d’attribuer des métadonnées aux objets Docker. Ces métadonnées peuvent servir à diverses fins, y compris la documentation, la configuration, ... Un label est une paire clé-valeur stockée sous forme de chaîne. Chaque clé doit être unique au sein d’un objet. Si une même clé est attribuée plusieurs valeurs, la valeur la plus récemment écrite écrase toutes les valeurs précédentes.
Exemple :
services:
webapp:
image: nginx:latest
labels:
com.example.description: "Ce service exécute l'application web principale"
com.example.department: "IT"
Expose
La clé expose
est utilisée pour indiquer les ports sur lesquels le conteneur expose des services aux autres conteneurs dans le même réseau Docker. Cependant, cela n’expose pas les ports à l’hôte.
Exemple :
services:
webapp:
image: nginx:latest
expose:
- "80"
Cela signifie que le conteneur expose le port 80, mais il n’est pas mappé sur un port de l’hôte. Cependant, d’autres conteneurs dans le même réseau Docker peuvent accéder à ce service en utilisant le nom du conteneur ou l’adresse IP interne du conteneur.
Port
La clé ports
permet de mapper les ports du conteneur sur les ports de l’hôte. Cela signifie que le service à l’intérieur du conteneur est accessible depuis l’extérieur via le port spécifié sur l’hôte.
Exemple :
services:
webapp:
image: nginx:latest
ports:
- "8080:80"
Cela signifie que le port 80 à l’intérieur du conteneur (où Nginx est en cours d’exécution) est mappé sur le port 8080 de l’hôte. Ainsi, vous pouvez accéder à Nginx depuis votre navigateur en utilisant l’URL http://localhost:8080
extra_hosts
La clé extra_hosts
est utilisée pour spécifier des entrées de résolution DNS supplémentaires pour les conteneurs. Cette fonctionnalité permet de définir des alias pour des hôtes ou des adresses IP qui ne sont pas résolus par défaut par le service DNS interne de Docker.
Exemple :
services:
web:
image: nginx
ports:
- "80:80"
extra_hosts:
- "hostname1:192.168.0.10"
Dans cet exemple, le conteneur web
peut résoudre le nom d’hôte hostname1
vers l’adresse IP 192.168.0.10
. Cela revient à ajouter une entrée 192.168.0.10 hostname1
dans le fichier /etc/hosts
à l’intérieur du conteneur de ce service.
En d’autres termes, chaque fois que le conteneur essaiera d’accéder à hostname1
, il sera redirigé vers 192.168.0.10
.
Profiles
Les profils facilitent l'adaptation de votre application à divers environnements ou cas d'utilisation. Ils permettent d'activer ou de désactiver certains services selon les besoins.
Les services qui ne sont pas associés à un profil spécifique démarrent systématiquement par défaut, tandis que ceux qui sont liés à un ou plusieurs profils ne s'activent que lorsque ces profils sont explicitement activés.
Pour démarrer un profil spécifique, vous avez deux possibilités : soit utiliser l'option --profile
en ligne de commande, soit définir la variable d'environnement COMPOSE_PROFILES
.
Exemple :
Pour démarrer les services associés au profil frontend
ou debug
, vous pouvez utiliser la commande suivante :
docker compose --profile frontend --profile debug up
Ou bien, vous pouvez définir la variable d'environnement COMPOSE_PROFILES
de cette manière :
COMPOSE_PROFILES=frontend,debug