Pourquoi je ne peux PAS me connecter à localhost:5432 ?
Chattez le /etc/hosts
de votre conteneur
$ sudo docker exec -it [container] cat /etc/hosts
Pour les réseaux Docker, c'est bridge
par défaut, le localhost
l'intérieur pointe vers le conteneur lui-même (Réseau de pont Docker par défaut
).Alors vous n'avez pas 5432
écoute dans votre conteneur :
$ sudo docker exec [container] nc -v -z localhost 5432
Solution 1. Si vous voulez coder en dur le "localhost:5432" dans votre fichier xml de configuration, le moyen le plus simple est de créer votre conteneur avec l'option "--net=host":
$ sudo docker run --net=host -it ...
Solution 2. Changer le
localhost
de votre adresse IP d'hôte docker à l'intérieur du conteneur- Obtenez votre adresse IP d'hôte Docker :
$ sudo docker inspect -f '{{ .NetworkSettings.Gateway }}' 192.168.5.1
- Entrez votre conteneur :
$ sudo docker exec -it [container] /bin/bash
- Modifier le fichier
/etc/hosts
pour faire pointer l'hôte local vers l'ip de l'hôte docker :$ sudo vim /etc/hosts 192.168.5.1 localhost
Solution 3. Modifiez votre fichier de configuration db pour utiliser un alias au lieu de localhost
:
connectionURL="jdbc:postgresql://DB_ALIAS/admin?stringtype=unspecified"
Ajoutez ensuite le DB_ALIAS
aux hôtes du conteneur :$ sudo docker run --add-host DB_ALIAS:192.168.5.1 -it [image] ...