Docker Compose - ateliers avancés
Volumes
Configuration de Volume: configurer un volume persistant pour le service postgres. Il doit être conservé même en cas de destruction du container ou de la stack Compose.
- Ajouter un volume
db-data - Configurer le service
dbpour utiliser le volumedb-dataà l'emplacement/var/lib/postgresql/data
Réseaux
Configuration de Réseaux:
- Ajouter un réseau
app-network - Configurer l'ensemble des services pour que les containers soient associés au réseau
app-networket relancer la stack
Variables d'environnement
Docker Compose permet de définir un fichier de variable d'environnement global qui seront affectées à chaque container.
- Trouver dans la documentation la fonctionnalité correspondante
- Remplacer les variables d'environnement du service
dbdansdocker-compose.ymlet par le fichier de variable d'environnement utilisé par Compose
Docker Compose permet de définir des variables qui seront substituées aux variables d'environnement.
- Modifier
docker-compose.ymlpour définir la version du serviceredispour qu'elle utilise la variable d'environnementREDIS_VERSIONsi possible, etalpinepar défaut: - Définir la variable d'environnement
REDIS_VERSION=5.0.7-alpineet relancer la stack. Vérifier que le containerredisutilise l'imageredis:5.0.7-alpine
Override docker-compose.yml
Docker Compose permet d'utiliser plusieurs fichiers de configuration .yml pour étendre une configuration de base.
- Trouver dans la documentation la référence à ce méchanisme d'extention des configurations
- Créer un fichier
docker-compose.dev.ymlétendantdocker-compose.ymltel que:- le service
votemonte le code sourcevote/à l'emplacement/app - le service
voteutilise la commandepython -m flask run -h 0.0.0.0 -p 80 - le service
votedispose des variables d'environnements:FLASK_APP=app.app FLASK_ENV=development
- le service
- Relancer la stack en combinant
docker-compose.ymletdocker-compose.dev.yml - Renommer
docker-compose.dev.ymlde façon à pouvoir lancer la stack avecdocker-compose.ymlet le fichier d'override avec uniquement la commandedocker compose up -dsans aucune autre option
Cette configuration permet de monter le code source de l'application Vote (Python) directement dans le container et de relancer l'application dynamiquement au sein du container sans avoir à re-builder ou redémarrer le container.
Cette méthode utilise les fonctionnalités de Flask (serveur web Python) mais la plupart des frameworks permettent un setup similaire pour les environnement de développement.
Il est ainsi possible de définir une configuration de base Docker Compose avec des overrides selon différent contextes (dev, CI, production, etc.)