Waarom kan ik GEEN verbinding maken met localhost:5432?
Cat de /etc/hosts
van uw container
$ sudo docker exec -it [container] cat /etc/hosts
Voor docker-netwerken is bridge
standaard is de localhost
inside verwijst naar de container zelf(Docker standaard bridge-netwerk
).Dan heb je geen 5432
luisteren in je container:
$ sudo docker exec [container] nc -v -z localhost 5432
Oplossing 1. Als u de "localhost:5432" in uw config xml hard wilt coderen, is de eenvoudigste manier om uw container te maken met de optie "--net=host":
$ sudo docker run --net=host -it ...
Oplossing 2. Wijzig de
localhost
van uw docker-host-ip in de container- Verkrijg uw docker-host-ip :
$ sudo docker inspect -f '{{ .NetworkSettings.Gateway }}' 192.168.5.1
- Voer uw container in:
$ sudo docker exec -it [container] /bin/bash
- Bewerk het bestand
/etc/hosts
om de localhost te verwijzen naar docker host ip :$ sudo vim /etc/hosts 192.168.5.1 localhost
Oplossing 3. Pas uw db-configuratiebestand aan om een alias te gebruiken in plaats van localhost
:
connectionURL="jdbc:postgresql://DB_ALIAS/admin?stringtype=unspecified"
Voeg vervolgens de DB_ALIAS
. toe naar de hosts van de container :$ sudo docker run --add-host DB_ALIAS:192.168.5.1 -it [image] ...