Breakout Distant — Connexion depuis Docker
Quand la base de données cible tourne dans un autre projet Docker, localhost ne fonctionne pas depuis l'intérieur d'un container. Ce tutoriel explique comment trouver le bon hostname.
Comprendre le problème
CSWeb tourne dans ses propres containers (csweb-app, csweb-mysql-metadata). Si la base PostgreSQL, MySQL ou SQL Server cible est dans un autre projet Docker, les deux réseaux sont isolés — ils ne se voient pas via localhost.
Étape 1 — Identifier le port exposé de la base cible
Dans le docker-compose.yml du projet cible, repère le mapping de port :
ports:
- "5433:5432" # hôte:containerIci, la base PostgreSQL est accessible depuis la machine hôte sur le port 5433.
Étape 2 — Vérifier que la base cible tourne
docker ps | grep <nom_container>Exemple :
kairos-florida-postgres Up 4 hours (healthy) 0.0.0.0:5433->5432/tcpÉtape 3 — Choisir le bon hostname
| Situation | Hostname | Port |
|---|---|---|
| DB dans un réseau Docker différent (cas habituel) | host.docker.internal | port exposé sur l'hôte (ex: 5433) |
| DB dans le même réseau Docker que csweb | nom du container (ex: my-postgres) | port interne (5432) |
| DB sur machine distante | IP ou hostname réseau | port configuré |
Sur macOS avec Docker Desktop,
host.docker.internalrésout automatiquement vers la machine hôte — c'est la méthode recommandée.Sur Linux,
host.docker.internalpeut ne pas exister. Utilise la gateway du réseau Docker à la place :docker network inspect csweb8_pg_csweb-network --format '{{range .IPAM.Config}}{{.Gateway}}{{end}}' # ex: 172.24.0.1
Étape 4 — Remplir le formulaire CSWeb
Dans Data Configuration → Add Configuration :
| Champ | Valeur |
|---|---|
| Database name | nom de la DB cible (ex: kairos_florida) |
| Database type | PostgreSQL / MySQL / SQL Server |
| Hostname | host.docker.internal |
| Port | port exposé (ex: 5433) |
| Database username | utilisateur de la DB cible |
| Database password | mot de passe de la DB cible |
Étape 5 — Vérifier
Si la configuration est ajoutée avec succès, tu verras dans la liste :
host.docker.internal | kairos_floridaDiagnostic rapide
# Voir tous les containers actifs et leurs ports
docker ps
# Voir le réseau d'un container
docker inspect <container_name> --format '{{json .NetworkSettings.Networks}}'
# Voir les containers d'un réseau
docker network inspect <network_name> --format '{{range .Containers}}{{.Name}} {{end}}'