feat: docs
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
---
|
||||
title: Mapping de ports
|
||||
description: Publier un port du conteneur vers l'hôte sans exposer toute la stack.
|
||||
---
|
||||
|
||||
## Réseau interne et monde extérieur
|
||||
|
||||
Le réseau bridge est privé. Les services communiquent entre eux, mais le navigateur ou le terminal de l'hôte ne peut pas les joindre tant qu'aucun port n'est publié.
|
||||
|
||||
```yaml
|
||||
services:
|
||||
nginx:
|
||||
ports:
|
||||
- "8080:80"
|
||||
- "8443:443"
|
||||
```
|
||||
|
||||
La syntaxe est :
|
||||
|
||||
```text
|
||||
PORT_HÔTE:PORT_CONTENEUR
|
||||
```
|
||||
|
||||
`8443:443` redirige le port 8443 de la machine vers le port 443 écouté par Nginx dans le conteneur.
|
||||
|
||||
## Exposer uniquement le point d'entrée
|
||||
|
||||
Dans une stack classique, PostgreSQL, le backend et le frontend n'ont pas forcément de section `ports:`. Ils restent accessibles depuis le réseau Docker, mais pas depuis l'extérieur.
|
||||
|
||||
Seul Nginx publie un port. Il devient le point d'entrée et route ensuite les requêtes vers les services internes.
|
||||
|
||||
```text
|
||||
navigateur
|
||||
│
|
||||
▼
|
||||
port publié de Nginx
|
||||
│
|
||||
├──► frontend
|
||||
└──► backend ──► postgres
|
||||
```
|
||||
|
||||
## Éviter les collisions
|
||||
|
||||
Le port interne d'un service reste le même, tandis que le port hôte peut changer :
|
||||
|
||||
```yaml
|
||||
# Stack A
|
||||
ports:
|
||||
- "8443:443"
|
||||
|
||||
# Stack B
|
||||
ports:
|
||||
- "8444:443"
|
||||
```
|
||||
|
||||
Ce principe permet à plusieurs workers de test de lancer la même stack sur des plages de ports différentes.
|
||||
|
||||
## Restreindre une publication à la machine
|
||||
|
||||
```yaml
|
||||
services:
|
||||
postgres:
|
||||
ports:
|
||||
- "127.0.0.1:15432:5432"
|
||||
```
|
||||
|
||||
Le préfixe `127.0.0.1` rend le port accessible depuis le serveur pour la maintenance, sans l'ouvrir sur l'adresse publique.
|
||||
|
||||
<Callout title="Principe de sécurité" type="warning">
|
||||
Ne publie pas une base de données sur toutes les interfaces sans nécessité. Sans le préfixe 127.0.0.1, un mapping comme 5432:5432 peut exposer PostgreSQL sur Internet si le pare-feu le permet.
|
||||
</Callout>
|
||||
Reference in New Issue
Block a user