Warum kann ich mich NICHT mit localhost:5432 verbinden?
Cat die /etc/hosts
Ihres Containers
$ sudo docker exec -it [container] cat /etc/hosts
Für Docker-Netzwerke ist bridge
standardmäßig der localhost
inside verweist auf den Container selbst (Docker-Standardbrückennetzwerk
). ).Dann haben Sie 5432
nicht Abhören in Ihrem Container:
$ sudo docker exec [container] nc -v -z localhost 5432
Lösung 1. Wenn Sie „localhost:5432“ in Ihrer Konfigurations-XML hartcodieren möchten, erstellen Sie Ihren Container am einfachsten mit der Option „--net=host“:
$ sudo docker run --net=host -it ...
Lösung 2. Ändern Sie den
localhost
Ihrer Docker-Host-IP im Container- Holen Sie sich Ihre Docker-Host-IP :
$ sudo docker inspect -f '{{ .NetworkSettings.Gateway }}' 192.168.5.1
- Geben Sie Ihren Container ein:
$ sudo docker exec -it [container] /bin/bash
- Bearbeiten Sie die Datei
/etc/hosts
um den localhost auf docker host ip zu verweisen :$ sudo vim /etc/hosts 192.168.5.1 localhost
Lösung 3. Ändern Sie Ihre db-Konfigurationsdatei, um einen Alias anstelle von localhost
zu verwenden :
connectionURL="jdbc:postgresql://DB_ALIAS/admin?stringtype=unspecified"
Fügen Sie dann den DB_ALIAS
hinzu zu den Hosts des Containers:$ sudo docker run --add-host DB_ALIAS:192.168.5.1 -it [image] ...