Retour au cours

Leçon 18 : Anatomie d'un Fichier docker-compose.yml

Docker, de zéro à héros : Le cours complet sur la conteneurisation pour débutants

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 web utilise build: . pour trouver son Dockerfile localement.
  • Le service db utilise la clé image: pour extraire de Docker Hub.
  • Les services se référencent mutuellement par leur nom (db est le nom d'hôte pour la connexion à la base de données depuis le service web).
  • Le volume postgres_data est défini globalement puis monté dans le service db.