Bonnes pratiques et scénarios réels
Maintenant que vous comprenez la commande docker-compose down
et ses options, explorons quelques bonnes pratiques et scénarios réels pour utiliser cette commande efficacement.
Création d'un environnement Docker Compose plus complexe
Pour mieux illustrer l'utilisation en conditions réelles, créons un environnement Docker Compose plus complexe. Nous allons configurer une simple application web avec un frontend, un backend et une base de données.
cd ~/project/docker-compose-demo
nano docker-compose.yml
Remplacez le contenu par :
version: "3"
services:
frontend:
image: nginx:alpine
ports:
- "8080:80"
volumes:
- frontend_data:/usr/share/nginx/html
networks:
- app_network
backend:
image: node:14-alpine
command: sh -c "echo 'Backend service running' && sleep infinity"
volumes:
- backend_data:/app
networks:
- app_network
- db_network
database:
image: postgres:13-alpine
environment:
POSTGRES_PASSWORD: example
POSTGRES_USER: user
POSTGRES_DB: appdb
volumes:
- db_data:/var/lib/postgresql/data
networks:
- db_network
networks:
app_network:
db_network:
volumes:
frontend_data:
backend_data:
db_data:
Enregistrez et quittez l'éditeur.
Démarrons cet environnement plus complexe :
docker-compose up -d
Vous devriez voir une sortie montrant la création de réseaux, de volumes et de conteneurs pour les trois services.
Bonne pratique : Utilisation des environnements
Dans des scénarios réels, vous pouvez avoir différents environnements comme le développement, les tests et la production. Docker Compose vous permet d'utiliser différents fichiers de configuration pour différents environnements.
Créez un fichier pour l'environnement de développement :
nano docker-compose.dev.yml
Ajoutez le contenu suivant :
version: "3"
services:
frontend:
ports:
- "8081:80"
environment:
NODE_ENV: development
backend:
environment:
NODE_ENV: development
DEBUG: "true"
database:
ports:
- "5432:5432"
Enregistrez et quittez l'éditeur.
Pour utiliser ce fichier en combinaison avec le fichier de base, vous pouvez utiliser l'option -f
:
docker-compose -f docker-compose.yml -f docker-compose.dev.yml up -d
Cela fusionnera les configurations, en appliquant les paramètres spécifiques au développement.
Pour mettre hors service cet environnement, vous utiliseriez :
docker-compose -f docker-compose.yml -f docker-compose.dev.yml down
Bonne pratique : Utilisation d'un script de nettoyage
Dans les pipelines d'intégration/déploiement continus (CI/CD) ou les flux de travail de développement, il est souvent utile d'avoir un script de nettoyage qui supprime toutes les ressources Docker. Créons un simple script de nettoyage :
nano cleanup.sh
Ajoutez le contenu suivant :
#!/bin/bash
echo "Nettoyage de l'environnement Docker..."
## Arrêter et supprimer les conteneurs, les réseaux, les volumes et les images
docker-compose down --volumes --rmi all --remove-orphans
## Supprimer les volumes flottants
echo "Suppression des volumes flottants..."
docker volume prune -f
## Supprimer les images flottantes
echo "Suppression des images flottantes..."
docker image prune -f
echo "Nettoyage terminé !"
Enregistrez et quittez l'éditeur.
Rendez le script exécutable :
chmod +x cleanup.sh
Vous pouvez maintenant exécuter ce script chaque fois que vous devez effectuer un nettoyage complet :
./cleanup.sh
Bonne pratique : Suppression sélective des ressources
Parfois, vous souhaiterez peut-être supprimer uniquement des ressources spécifiques. Par exemple, vous souhaiterez peut-être conserver vos volumes (pour préserver les données) mais supprimer les conteneurs, les réseaux et les images.
Voici comment vous aborderiez différents scénarios :
-
Supprimer uniquement les conteneurs et les réseaux (conserver les volumes et les images) :
docker-compose down
-
Supprimer les conteneurs, les réseaux et les images (conserver les volumes) :
docker-compose down --rmi all
-
Supprimer les conteneurs, les réseaux et les volumes (conserver les images) :
docker-compose down --volumes
-
Supprimer uniquement les images locales (non extraites d'un registre) :
docker-compose down --rmi local
En supprimant sélectivement les ressources, vous pouvez optimiser votre flux de travail en fonction de vos besoins spécifiques.
Bonne pratique : Surveillance de l'utilisation des ressources
Avant et après l'exécution de docker-compose down
, il est souvent utile de surveiller l'utilisation de vos ressources Docker. Cela peut vous aider à identifier les ressources qui ne sont pas correctement nettoyées.
Voici quelques commandes utiles :
-
Lister tous les conteneurs (y compris ceux arrêtés) :
docker ps -a
-
Lister tous les réseaux :
docker network ls
-
Lister tous les volumes :
docker volume ls
-
Lister toutes les images :
docker image ls
-
Obtenir des informations à l'échelle du système :
docker system df
Essayons la dernière commande pour voir notre utilisation actuelle des ressources :
docker system df
Vous verrez un résumé de votre utilisation des ressources Docker, y compris le nombre de conteneurs, d'images, de volumes et la quantité totale d'espace utilisé.
Mise hors service de notre environnement complexe
Maintenant, mettons hors service notre environnement complexe et supprimons toutes les ressources associées :
docker-compose down --volumes --rmi all --remove-orphans
Cela arrêtera et supprimera tous les conteneurs, réseaux, volumes et images associés à notre projet Docker Compose.
En suivant ces bonnes pratiques, vous pouvez gérer efficacement vos environnements Docker et garantir une utilisation optimale des ressources.