PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Utilizzando Docker per avviare l'app Web, non riesci a connetterti a Postgresql DB?

Perché NON riesco a connettermi a localhost:5432?

Cattura il /etc/hosts del tuo container

$ sudo docker exec -it [container] cat /etc/hosts

Per le reti Docker è bridge per impostazione predefinita, il localhost inside punta al container stesso(Rete bridge predefinita di Docker ).Allora non hai 5432 ascoltando nel tuo contenitore:

$ sudo docker exec [container] nc -v -z localhost 5432

Soluzione 1. Se vuoi codificare "localhost:5432" all'interno del tuo xml di configurazione, il modo più semplice è creare il tuo contenitore con l'opzione "--net=host":

$ sudo docker run --net=host -it ...

Soluzione 2. Modificare il localhost del tuo IP host Docker all'interno del contenitore
  • Ottieni il tuo IP host Docker
    $ sudo docker inspect -f '{{ .NetworkSettings.Gateway }}' 
    192.168.5.1
  • Inserisci il tuo contenitore:
    $ sudo docker exec -it [container] /bin/bash
  • Modifica il file /etc/hosts per indirizzare l'host locale all'ip host docker :
    $ sudo vim /etc/hosts
    192.168.5.1 localhost

Soluzione 3. Modifica il file di configurazione db per utilizzare un alias invece di localhost :

connectionURL="jdbc:postgresql://DB_ALIAS/admin?stringtype=unspecified"
Quindi aggiungi il DB_ALIAS agli host del contenitore :
$ sudo docker run --add-host DB_ALIAS:192.168.5.1 -it [image] ...