Skip to main content

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 : 

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
    restart: always
    networks:
      - bddnet
    ports:
      - '5432:5432'
    volumes:
      - /var/lib/postgres/data:/var/lib/postgresql/data
    environment:
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=passwordPostgres

volumes:
  postgres-data:
networks:
  bddnet:		# Nom du nouveau Network
    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