Proč se NEMOHU připojit k localhost:5432?
Označte /etc/hosts svého kontejneru
$ sudo docker exec -it [container] cat /etc/hosts
Pro docker sítě je bridge ve výchozím nastavení localhost uvnitř ukazuje na samotný kontejner (Výchozí síť mostu Docker
).Pak nemáte 5432 poslech ve vašem kontejneru:
$ sudo docker exec [container] nc -v -z localhost 5432
Řešení 1. Pokud chcete napevno zakódovat "localhost:5432" v konfiguračním xml, nejjednodušším způsobem je vytvoření kontejneru s možností "--net=host":
$ sudo docker run --net=host -it ...
Řešení 2. Změňte
localhost vaší hostitelské IP adresy dockeru v kontejneru- Získejte IP hostitele dockeru :
$ sudo docker inspect -f '{{ .NetworkSettings.Gateway }}' 192.168.5.1 - Zadejte svůj kontejner:
$ sudo docker exec -it [container] /bin/bash - Upravte soubor
/etc/hostsk nasměrování localhost na IP hostitele docker :$ sudo vim /etc/hosts 192.168.5.1 localhost
Řešení 3. Upravte svůj konfigurační soubor db tak, aby používal alias místo localhost :
connectionURL="jdbc:postgresql://DB_ALIAS/admin?stringtype=unspecified" Poté přidejte DB_ALIAS k hostitelům kontejneru :$ sudo docker run --add-host DB_ALIAS:192.168.5.1 -it [image] ...