PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Utilisation de Docker pour lancer l'application Web, impossible de se connecter à la base de données Postgresql ?

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