Junior
Quelle est votre expérience avec Docker Compose?
sobes.tech IA
Réponse de l'IA
J'utilise Docker Compose pour définir et exécuter des applications multi-conteneurs. Mon expérience inclut :
- Développement d'un environnement local : Création d'un fichier
docker-compose.ymlpour lancer tous les services nécessaires (backend, frontend, base de données, cache) pour le développement local. Cela permet de rapidement mettre en place un environnement isolé du système principal. - Tests : Utilisation de Docker Compose pour créer des environnements de test avec différentes configurations de services.
- Déploiement en staging/production : Bien que pour la production, des orchestrateurs plus puissants (Kubernetes) soient souvent utilisés, Docker Compose a été utilisé lors des phases initiales ou pour de petits projets pour déployer sur des serveurs de staging.
Exemples d'utilisation des champs dans docker-compose.yml :
services: Définition d'un ensemble de conteneurs.image: Spécification de l'image Docker à utiliser.build: Construction de l'image à partir d'un Dockerfile.ports: Mappage des ports.volumes: Montage de volumes pour sauvegarder des données ou monter du code source.networks: Définition de réseaux personnalisés.depends_on: Établissement de dépendances entre services.environment: Passage de variables d'environnement au conteneur.
Exemple de configuration simple pour une application web et une base de données :
services:
webapp:
build: ./webapp # Construction à partir du Dockerfile dans le répertoire webapp
ports:
- "80:80" # Mappage du port 80 de l'hôte au port 80 du conteneur
environment:
DATABASE_URL: postgresql://user:password@db:5432/mydb # Variable d'environnement
depends_on:
- db # L'application web dépend de la base de données
db:
image: postgres:13 # Utilisation de l'image PostgreSQL
volumes:
- db_data:/var/lib/postgresql/data # Sauvegarde des données
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
POSTGRES_DB: mydb
volumes:
db_data: # Définition du volume nommé
Commandes courantes :
docker compose up -d # Démarrer les services en arrière-plan
docker compose down # Arrêter et supprimer les services
docker compose build # Construire les images
docker compose logs <nom_du_service> # Voir les logs d'un service spécifique
docker compose exec <nom_du_service> <commande> # Exécuter une commande dans le conteneur
Je maîtrise la syntaxe des différentes versions de Compose et leurs différences. Je comprends comment utiliser les fichiers .env pour gérer les variables d'environnement et comment appliquer des profils pour lancer différents ensembles de services.