🛢️Parcours Fioul GroupéDocker · Chapitre 05
Accueil › Docker › Chapitre 05
Chapitre 05 / 08

Les réseaux

Comment l'API parle-t-elle à la base ? Docker crée des réseaux virtuels où les conteneurs se joignent par leur nom. C'est la clé pour relier les trois couches.

1 Notion

Isoler puis relier

Chaque conteneur a son propre réseau isolé. Pour que l'API atteigne MongoDB, il faut les placer sur un même réseau Docker. Ensuite ils communiquent sans exposer de port vers l'extérieur.

2 Commande

Créer un réseau & y attacher

On crée un réseau bridge et on y lance les conteneurs avec --network.

docker network create fioul-net
docker run -d --name fioul-mongo --network fioul-net mongo:7
docker run -d --name fioul-api  --network fioul-net -p 8080:8080 fioul-api:1.0
3 Notion

La résolution par nom de conteneur

Sur un réseau Docker, un conteneur en joint un autre par son nom (Docker fournit un DNS interne). L'API n'utilise donc pas localhost mais le nom du service base.

# côté API (application.properties)
spring.data.mongodb.uri=mongodb://fioul-mongo:27017/fioul
À comprendre — localhost dans un conteneur désigne le conteneur lui-même, pas l'hôte ni les voisins. Entre conteneurs, on utilise le nom (fioul-mongo), pas localhost.
4 Pratique

Relier l'API et la base

Seule l'API publie un port vers l'extérieur (-p 8080:8080) ; la base reste privée sur le réseau interne, jointe par l'API via son nom.

🛢️ Sur le projet Fioul Groupé

Mets fioul-mongo et fioul-api sur fioul-net ; configure l'API avec mongodb://fioul-mongo:27017/fioul. La base n'est pas exposée à l'extérieur (plus sûr). Le chapitre 7 automatise tout ça avec Compose (qui crée le réseau tout seul).

À retenir
  • Les conteneurs sur un même réseau Docker se joignent par leur nom.
  • Entre conteneurs, jamais localhost — le nom du service.
  • On n'expose (-p) que ce qui doit être public ; la base reste interne.
← Chapitre 04