Leçon 18 : Anatomie d'un Fichier docker-compose.yml
Créons un fichier compose.yml fonctionnel pour une application simple composée d'un service web (utilisant un Dockerfile personnalisé) et d'une base de données PostgreSQL.
Configuration du Projet
Créez une structure de répertoire :
my-app-stack/ ├── Dockerfile (Pour l'application web) ├── server.py (Votre code d'application) └── docker-compose.yml
Contenu du docker-compose.yml
yaml version: '3.8'
services: web: # 1. Construire l'image à l'aide du Dockerfile local build: . # 2. Mapper le port hôte 80 au port conteneur 5000 ports: - "80:5000" # 3. Définir les variables d'environnement pour l'application web environment: DB_HOST: db DB_PORT: 5432 # 4. Monter le répertoire actuel pour la vitesse de développement volumes: - .:/code
db: # 1. Extraire l'image officielle Postgres image: postgres:15-alpine # 2. Définir les variables d'environnement requises par Postgres environment: POSTGRES_USER: user POSTGRES_PASSWORD: password POSTGRES_DB: mydb # 3. Utiliser un volume nommé pour les données persistantes volumes: - postgres_data:/var/lib/postgresql/data # 4. Politique de Redémarrage : toujours essayer de redémarrer en cas d'échec restart: always
volumes: postgres_data: # Définir le volume persistant
Par défaut, Compose crée un réseau appelé 'my-app-stack_default'
et tous les services y sont connectés.
Points Clés Appris :
- Le service
webutilisebuild: .pour trouver son Dockerfile localement. - Le service
dbutilise la cléimage:pour extraire de Docker Hub. - Les services se référencent mutuellement par leur nom (
dbest le nom d'hôte pour la connexion à la base de données depuis le serviceweb). - Le volume
postgres_dataest défini globalement puis monté dans le servicedb.