Varför kan jag INTE ansluta till localhost:5432?
Kata din behållares /etc/hosts
$ sudo docker exec -it [container] cat /etc/hosts
För dockningsnätverk är bridge
som standard är localhost
insidan pekar på själva behållaren(Docker standardbryggnätverk
). Då har du inte 5432
lyssnar i din behållare:
$ sudo docker exec [container] nc -v -z localhost 5432
Lösning 1. Om du vill hårdkoda "localhost:5432" i din config xml, är det enklaste sättet att skapa din behållare med alternativet "--net=host":
$ sudo docker run --net=host -it ...
Lösning 2. Ändra
localhost
av din dockar-värd-ip inuti behållaren- Hämta din docker-värd-ip :
$ sudo docker inspect -f '{{ .NetworkSettings.Gateway }}' 192.168.5.1
- Ange din behållare:
$ sudo docker exec -it [container] /bin/bash
- Redigera filen
/etc/hosts
för att peka den lokala värden till docker-värdens ip :$ sudo vim /etc/hosts 192.168.5.1 localhost
Lösning 3. Ändra din db-konfigurationsfil så att den använder ett alias istället för localhost
:
connectionURL="jdbc:postgresql://DB_ALIAS/admin?stringtype=unspecified"
Lägg sedan till DB_ALIAS
till behållarens värdar :$ sudo docker run --add-host DB_ALIAS:192.168.5.1 -it [image] ...