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/hostspour 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] ...