feat: docs
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
---
|
||||
title: Réseaux Docker
|
||||
description: Relier les services avec un réseau privé et la résolution DNS interne.
|
||||
---
|
||||
|
||||
## Des conteneurs isolés
|
||||
|
||||
Chaque conteneur possède sa propre pile réseau. Pour que le backend puisse joindre PostgreSQL et que Nginx puisse joindre le frontend, leurs conteneurs doivent partager un réseau.
|
||||
|
||||
## Réseau bridge et noms de services
|
||||
|
||||
Compose crée un réseau et y attache les services. Sur ce réseau, Docker fournit un DNS interne : chaque service est joignable avec son nom.
|
||||
|
||||
```yaml
|
||||
networks:
|
||||
app-network:
|
||||
driver: bridge
|
||||
|
||||
services:
|
||||
postgres:
|
||||
networks:
|
||||
- app-network
|
||||
|
||||
backend:
|
||||
networks:
|
||||
- app-network
|
||||
environment:
|
||||
POSTGRES_HOST: postgres
|
||||
MINIO_HOST: minio
|
||||
SMTP_HOST: mailpit
|
||||
```
|
||||
|
||||
Le backend se connecte à la base avec l'hôte `postgres`. Docker résout ce nom vers l'adresse interne du conteneur correspondant.
|
||||
|
||||
Les adresses IP peuvent changer à chaque redémarrage ; les noms de services restent stables.
|
||||
|
||||
<Callout title="localhost reste local" type="warning">
|
||||
À l'intérieur d'un conteneur, localhost désigne ce même conteneur. Pour joindre un autre service, utilise son nom Compose, jamais localhost.
|
||||
</Callout>
|
||||
|
||||
## Isolation entre les stacks
|
||||
|
||||
Deux projets Compose distincts créent chacun leur réseau bridge. Leurs services ne se voient pas par défaut.
|
||||
|
||||
Cette isolation permet notamment de lancer plusieurs stacks de tests en parallèle sans qu'elles communiquent entre elles.
|
||||
|
||||
## Segmenter l'application
|
||||
|
||||
Un service peut appartenir à plusieurs réseaux. On peut ainsi exposer Nginx au réseau frontal tout en gardant PostgreSQL uniquement sur un réseau interne :
|
||||
|
||||
```yaml
|
||||
networks:
|
||||
public:
|
||||
private:
|
||||
|
||||
services:
|
||||
nginx:
|
||||
networks:
|
||||
- public
|
||||
- private
|
||||
|
||||
backend:
|
||||
networks:
|
||||
- private
|
||||
|
||||
postgres:
|
||||
networks:
|
||||
- private
|
||||
```
|
||||
|
||||
Seuls les services partageant un réseau peuvent communiquer directement.
|
||||
Reference in New Issue
Block a user