2016-03-31 21 views
1

Ich bin ein wenig verloren, warum meine Java-Anwendung keine Verbindung zu meiner Postgres-Datenbank herstellen kann. Ich bin bestrebt, eine Verbindung zu einer Postgres-Datenbank über JDBC herzustellen. Die Anwendung soll in einem Andock-Container ausgeführt werden.Verbinden mit Postgres aus einem Docker-Container

this.connection = `DriverManager.getConnection("jdbc:postgresql://<myip>:5432/databasename", "usr", "password");` 

Ich erhalte die Ausnahme:

Connection refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections. 

Wenn ich die Anwendung von meinem Desktop laufen, verbindet es wie erwartet. Wenn ich es im Andock-Container ausfühle, schlägt es fehl.

Ich habe gerade Docker heute Nachmittag installiert und lief durch die ersten Schritte für Windows, so ist mein Setup-Status direkt nach dem Ausführen. Hier ist der Inhalt meiner Dockerfile:

FROM java:8 
ADD VaultServer/
EXPOSE 3971 
EXPOSE 3972 
ENTRYPOINT ["java", "-jar", "VaultServer.jar"] 
+0

Haben Sie die Datei [pg_hba.conf] (http://www.postgresql.org/docs/9.1/static/auth-pg-hba-conf.html) korrekt konfiguriert, um Verbindungen vom Docker-Container zu akzeptieren IP Adresse? – dic19

+0

Ich denke schon. Es ist eine Installation auf meinem lokalen Rechner, die ich nicht geändert habe, seit sie ursprünglich vom Standardprozess erstellt wurde. Es hat gerade folgendes drin: # IPv4 lokale Verbindungen: Host alle alle 127.0.0.1/32 md5 # IPv6 lokale Verbindungen: Host alle alle :: 1/128 md5 – Andy

+0

Es scheint, dass Sie eine Verbindung herstellen möchten eine PostgreSQL-Installation auf dem Host über eine Anwendung in einem Docker-Container. Wenn das der Fall ist, lesen Sie hier http://stackoverflow.com/questions/31249112/allow-docker-container-to-connect-to-a-local-host-postgres-database –

Antwort

4

Innerhalb des Datenordner befindet sich eine Datei namens pg_hba.conf haben Sie es zu konfigurieren, um die Verbindungen zu akzeptieren. Ihre pg_hba.conf Datei sollte also eine Zeile wie diese host all all YourDockerip/24 md5 haben.

Danach konfigurieren Sie die postgresql.conf Datei. Sie müssen die listen_addresses für alle aktualisieren und sicherstellen, dass Sie diese Zeile auskommentieren, indem Sie die Markierung # entfernen. So sollte Ihre listen_addresses wie folgt aussehen .

+0

Sorry, ich bekomme immer noch meinen Kopf um Docker. Meinst du die IP für die Docker-Maschine oder die IP für den Container? Wenn es das letztere ist; Gibt es eine Möglichkeit, irgendwelche/alle von Docker zu hören, während ich beabsichtige, diese Container schließlich dynamisch nach oben und unten zu drehen. – Andy

+1

Um alle IP-Adressen zu hören, können Sie '0.0.0.0/0' verwenden. Hast du den postgreSQL Server nach dem Konfigurieren der Dateien neu gestartet? –

Verwandte Themen