CodeGym /Cours /Docker SELF /Configuration de docker-compose.yml pour lancer tous les ...

Configuration de docker-compose.yml pour lancer tous les services

Docker SELF
Niveau 23 , Leçon 3
Disponible

4.1 Initialisation

À cette étape, on va configurer le fichier compose.yaml pour lancer tous les services de notre application multi-conteneurs. Le fichier compose.yaml inclura les configurations pour le frontend, le backend et la base de données, ainsi que la définition des réseaux et des volumes.

Définir la version de Docker Compose

On commence par indiquer la version de Docker Compose. Dans cet exemple, on utilise la version 3 :

Yaml

version: '3'

4.2 Définir les services

Service 1 : Frontend (ReactJS)

Définissons un service pour le frontend, qui sera construit depuis le répertoire frontend et sera disponible sur le port 3000 :

Yaml

services:
  frontend:
    build: ./frontend
    ports:
      - "3000:3000"
    networks:
      - task-network

Service 2 : Backend (Flask)

Définissons un service pour le backend, qui sera construit depuis le répertoire backend. Il dépend du service de base de données et sera disponible sur le port 5000 :

Yaml

  backend:
    build: ./backend
    ports:
      - "5000:5000"
    depends_on:
      - database
    networks:
      - task-network
    environment:
      - DATABASE_URL=postgresql://taskuser:taskpassword@database:5432/taskdb

Où :

  • depends_on: indique que le service backend dépend du service database. Cela signifie que la base de données sera démarrée avant le backend.
  • environment: configure les variables d'environnement pour se connecter à la base de données.

Service 3 : Base de données (PostgreSQL)

Définissons un service pour la base de données, en utilisant l'image officielle postgres:13. Configurons des variables d'environnement pour créer une base de données et les identifiants utilisateur :

Yaml

  database:
    image: postgres:13
    environment:
      - POSTGRES_DB=taskdb
      - POSTGRES_USER=taskuser
      - POSTGRES_PASSWORD=taskpassword
    networks:
      - task-network
    volumes:
      - db-data:/var/lib/postgresql/data

Où :

  • environment: configure les variables d'environnement pour créer une base de données et un utilisateur au démarrage du conteneur.
  • volumes: connecte le volume db-data pour le stockage permanent des données.

4.3 Configuration des réseaux et volumes

Définissons les réseaux et volumes qui seront utilisés par nos services :

Yaml

networks:
  task-network:
    driver: bridge
      
volumes:
  db-data:

Où :

  • networks: définit le réseau task-network avec un type de driver bridge, qui sera utilisé pour la communication entre les conteneurs.
  • volumes: définit le volume db-data pour le stockage des données de la base de données.

4.4 Fichier complet docker-compose.yml

Maintenant, on va assembler toutes les parties dans un seul fichier docker-compose.yml:

Yaml

version: '3'

services:
  frontend:
    build: ./frontend
    ports:
      - "3000:3000"
    networks:
      - task-network
        
  backend:
    build: ./backend
    ports:
      - "5000:5000"
    depends_on:
      - database
    networks:
      - task-network
    environment:
      - DATABASE_URL=postgresql://taskuser:taskpassword@database:5432/taskdb
        
  database:
    image: postgres:13
    environment:
      - POSTGRES_DB=taskdb
      - POSTGRES_USER=taskuser
      - POSTGRES_PASSWORD=taskpassword
    networks:
      - task-network
    volumes:
      - db-data:/var/lib/postgresql/data
        
networks:
  task-network:
    driver: bridge
        
volumes:
  db-data:

Explication des paramètres

  • build: indique le chemin vers le répertoire contenant le Dockerfile pour créer l'image.
  • ports: ouvre les ports sur l'hôte pour accéder aux services.
  • depends_on: indique qu'un service dépend d'un autre, pour garantir l'ordre de lancement.
  • environment: configure les variables d'environnement pour les services.
  • networks: définit le réseau pour la communication entre les conteneurs.
  • volumes: définit les volumes pour le stockage persistant des données.

4.5 Démarrage de l'application

Maintenant que le fichier compose.yaml est configuré, on peut démarrer tous les services avec une seule commande :

Terminal

docker compose up

Cette commande va créer et lancer les conteneurs pour le frontend, le backend et la base de données en utilisant les paramètres définis dans compose.yaml.

Vérification du démarrage

Après avoir démarré les conteneurs, assure-toi que tous les services fonctionnent correctement :

  1. Frontend : ouvre un navigateur et va à l'adresse http://localhost:3000 pour vérifier le fonctionnement du frontend.
  2. Backend : ouvre un navigateur et va à l'adresse http://localhost:5000 pour vérifier le fonctionnement du backend.
  3. Base de données : assure-toi que le conteneur de la base de données est démarré et accessible via l'interaction réseau avec le backend.
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION