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 :
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 :
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 :
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 :
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 :
networks:
task-network:
driver: bridge
volumes:
db-data:
Où :
- networks: définit le réseau
task-network
avec un type de driverbridge
, 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
:
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 leDockerfile
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 :
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 :
- Frontend : ouvre un navigateur et va à l'adresse http://localhost:3000 pour vérifier le fonctionnement du frontend.
- Backend : ouvre un navigateur et va à l'adresse http://localhost:5000 pour vérifier le fonctionnement du backend.
- 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.
GO TO FULL VERSION