Guides
Breakout Sélectif
Breakout Distant (Docker)

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:container

Ici, 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

SituationHostnamePort
DB dans un réseau Docker différent (cas habituel)host.docker.internalport exposé sur l'hôte (ex: 5433)
DB dans le même réseau Docker que cswebnom du container (ex: my-postgres)port interne (5432)
DB sur machine distanteIP ou hostname réseauport configuré

Sur macOS avec Docker Desktop, host.docker.internal résout automatiquement vers la machine hôte — c'est la méthode recommandée.

Sur Linux, host.docker.internal peut 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 :

ChampValeur
Database namenom de la DB cible (ex: kairos_florida)
Database typePostgreSQL / MySQL / SQL Server
Hostnamehost.docker.internal
Portport exposé (ex: 5433)
Database usernameutilisateur de la DB cible
Database passwordmot 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_florida

Diagnostic 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}}'