Partager 1 conteneur BDD avec plusieurs autres conteneur
Comment partager un conteneur de BDD avec les autres ?
Pour ce faire nous allons mettre en place un nouveau réseau (Network) et connecter les conteneurs entre eux via ce nouveau réseau. L'architecture pourra être schématisé de la manière suivante :

1/ Créer le nouveau Network
La création d'un nouveau réseau avec Docker est très simple. Il suffit d'exécuter la commande suivante :
sudo docker network create "<new_network_name>"
Nous pouvons vérifier la création du réseau avec la commande suivante :
sudo docker network list
Ce qui donne la sortie :
user@servername:~$ sudo docker network list
NETWORK ID NAME DRIVER SCOPE
29f7ba793880 bddnet bridge local
21bac3cf5868 bridge bridge local
035d5327faeb host host local
041e2c568093 none null local
Nous pouvons voir que le Network bddnet existe bien.
2/ Créer le conteneur BDD
Après avoir créé le réseau, nous allons maintenant créer le conteneur de la base de données et le connecter a ce nouveau réseau.
Nous pouvons créer un conteneur avec la commande suivante :
Un point important dans cet étape, c'est de donner un nom au conteneur de BDD, il sera plus facile par la suite de le lier aux autres conteneurs.
sudo docker run -d --name postgres --network bddnet -e POSTGRES_USER="postgres"
Ou via un docker compose :
version: '3.8'
services:
db:
image: postgres:14-alpine
container_name: postgres # Nom du conteneur de BDD
restart: always
networks:
- bddnet # On lie ce conteneur au nouveau réseau
ports:
- '5432:5432'
volumes:
- /var/lib/postgres/data:/var/lib/postgresql/data
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=passwordPostgres
volumes:
postgres-data:
networks:
bddnet: # On précise que le réseau déclaré au dessus existe déjà
external: true
3/ Connecter les autres conteneurs
De la même manière que la création du conteneur de base de données nous allons créer des conteneur et les connecter sur le nouveau réseau.
sudo docker run -d --name website --network bddnet -p 80:8080 -e URL_SITE="http://exemple.com" -e DB_HOST="postgres" website
L'étape importante dans la création d'un conteneur utilisant le service d'un autre conteneur est : qu'il faut mettre le nom du conteneur de destination dans la variable d'environnement host.
Cet étape est plus visuel dans un docker compose :
version: '3'
services:
web:
image: website:latest
container_name: website
networks:
- bddnet # On lie ce conteneur au nouveau réseau
environment:
DB_TYPE: postgres
DB_HOST: postgres # Nom du conteneur de BDD
DB_PORT: 5432
DB_USER: user
DB_PASS: userPwd
DB_NAME: bddname
restart: unless-stopped
ports:
- "80:80"
networks:
bddnet: # On précise que ce réseau existe déjà
external: true
Il suffit de répéter cet étape a chaque fois que l'on souhaite connecter un conteneur au conteneur de BDD.
No comments to display
No comments to display