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