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/hosts
k 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] ...