5.1 Configuration des réseaux
Prenons encore un moment pour revoir en détail comment configurer les réseaux et les volumes pour notre application multi-conteneurs. Cela garantira une interaction correcte entre les services et un stockage durable des données.
Les réseaux Docker permettent aux conteneurs d'interagir entre eux. Dans notre application, nous allons utiliser un réseau de type bridge
pour connecter le frontend, le backend et la base de données.
Création d'un réseau
Nous avons déjà défini le réseau task-network
dans le fichier docker-compose.yml
:
networks:
task-network:
driver: bridge
Où :
- task-network: le nom du réseau qui sera utilisé pour l'interaction des conteneurs.
- driver:
bridge
: le type de réseau. Le réseaubridge
est standard pour connecter les conteneurs sur un même hôte.
Connexion des services au réseau
Nous avons connecté tous les services à ce réseau dans le fichier docker-compose.yml
. Assurons-nous que chaque service est correctement connecté :
Exemple pour le frontend :
frontend:
build: ./frontend
ports:
- "3000:3000"
networks:
- task-network
Exemple pour le backend :
backend:
build: ./backend
ports:
- "5000:5000"
depends_on:
- database
networks:
- task-network
environment:
- DATABASE_URL=postgresql://taskuser:taskpassword@database:5432/taskdb
Exemple pour la base de données :
database:
image: postgres:13
environment:
- POSTGRES_DB=taskdb
- POSTGRES_USER=taskuser
- POSTGRES_PASSWORD=taskpassword
networks:
- task-network
volumes:
- db-data:/var/lib/postgresql/data
5.2 Configuration des volumes
Les volumes Docker permettent de sauvegarder les données des conteneurs sur le système d'hôte, assurant leur stockage à long terme. Dans notre application, on va utiliser un volume pour stocker les données de la base de données PostgreSQL.
Création d'un volume
On a déjà défini le volume db-data
dans le fichier compose.yaml
:
volumes:
db-data:
Où :
-
db-data
: le nom du volume qui sera utilisé pour stocker les données de la base PostgreSQL.
Connexion du volume au service de base de données
On a connecté le volume db-data
au service de base de données dans le fichier docker-compose.yml
. Assurons-nous que c'est bien fait :
Exemple pour la base de données :
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ù :
-
volumes
: définit quels volumes seront connectés au conteneur. -
db-data:/var/lib/postgresql/data
: relie le volumedb-data
au répertoire/var/lib/postgresql/data
à l'intérieur du conteneur. Ce répertoire est utilisé par PostgreSQL pour stocker les données.
5.3 Fichier complet compose.yaml
Pour plus de clarté et de complétude, voici le fichier complet compose.yaml
, incluant la configuration des réseaux et des volumes :
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:
Vérification de la configuration des réseaux et des volumes
Après la configuration des réseaux et des volumes, assure-toi que tout est correctement configuré et fonctionne :
- 1. Lancement des containers :
Terminal
docker compose up
- 2. Vérification du réseau :
- Utilise la commande
docker network ls
pour vérifier que le réseautask-network
a été créé. - Utilise la commande
docker network inspect task-network
pour t'assurer que tous les containers sont connectés à ce réseau.
- Utilise la commande
- 3. Vérification des volumes :
- Utilise la commande
docker volume ls
pour vérifier que le volumedb-data
a été créé. - Utilise la commande
docker volume inspect db-data
pour vérifier les détails du volume.
- Utilise la commande
GO TO FULL VERSION