Fonctionnalités et configurations avancées de Compose
Bien que la structure et les commandes de base de Compose soient puissantes, Docker Compose offre également une série de fonctionnalités et d'options de configuration avancées pour vous aider à créer des applications plus complexes et robustes.
Variables d'environnement et secrets
Vous pouvez utiliser des variables d'environnement pour transmettre des paramètres de configuration à vos services. Docker Compose prend en charge les variables d'environnement à la fois au moment de la compilation et à l'exécution, qui peuvent être définies au niveau du service ou global.
De plus, vous pouvez utiliser les secrets Docker pour stocker en toute sécurité des informations sensibles, telles que les mots de passe de base de données ou les clés API, et les rendre disponibles à vos services.
version: "3"
services:
web:
image: myapp/web
environment:
- DATABASE_URL=mysql://root:${DB_PASSWORD}@db/myapp
secrets:
- db-password
secrets:
db-password:
file: ./db-password.txt
Gestion des dépendances et tests de santé
Docker Compose vous permet de définir des dépendances entre les services, garantissant que les services sont démarrés dans le bon ordre et que les services dépendants sont en bon état avant le démarrage d'autres services.
Vous pouvez également configurer des tests de santé pour vos services, ce qui permet à Compose de surveiller l'état de santé de vos conteneurs et de prendre les mesures appropriées, telles que le redémarrage des conteneurs en mauvais état.
version: "3"
services:
web:
image: myapp/web
depends_on:
db:
condition: service_healthy
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost"]
interval: 30s
timeout: 10s
retries: 5
db:
image: mysql:5.7
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
interval: 30s
timeout: 10s
retries: 5
Réseaux et découverte de services
Docker Compose crée automatiquement un réseau par défaut pour votre application, mais vous pouvez également définir des réseaux personnalisés et contrôler la configuration réseau de vos services.
De plus, Compose fournit une découverte de services intégrée, permettant à vos services de trouver et de communiquer entre eux en utilisant les noms de service définis dans le fichier Compose.
version: "3"
services:
web:
image: myapp/web
networks:
- frontend
environment:
- DB_HOST=db
db:
image: mysql:5.7
networks:
- backend
networks:
frontend:
backend:
En tirant parti de ces fonctionnalités avancées, vous pouvez créer des applications Docker Compose plus complexes, plus robustes et plus évolutives qui répondent aux besoins de votre organisation.