2016-03-31 23 views
1

Java programımın postgres veritabanıma neden bağlanamadığına dair biraz kaybolacağım. Jdbc ile bir postgres veritabanına bağlanmayı hedefliyorum. Uygulama bir docker konteynerinin içinde çalışmaktır. Benim masaüstünden uygulamayı çalıştırdığınızda beklendiği gibiBir docker kabından postgres bağlama

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

, bu bağlar:

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

ben istisna alıyorum. Onu docker konteynerinden çalıştırdığımda, başarısız olur.

Bu öğleden sonra docker'ı yeni yükledim ve pencereler için çalışmaya başladım, böylece kurulum durumum bunu çalıştırdıktan hemen sonra. İşte benim Dockerfile içeriğini var: Eğer bağlantılarını kabul edecek şekilde yapılandırmak zorunda pg_hba.conf adlı bir dosya varsa veri klasörü içinde

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

Docker deposunun bağlantılarını kabul etmek için [pg_hba.conf] (http://www.postgresql.org/docs/9.1/static/auth-pg-hba-conf.html) dosyasını doğru şekilde yapılandırdınız mı? IP adresi? – dic19

+0

Sanırım. Önceden varsayılan işlem tarafından oluşturulduğundan beri değiştirmediğim yerel makinemdeki bir kurulum. Sadece içinde aşağıdaki etti: # IPv4 yerel bağlantıları: konak tüm 127.0.0.1/32 md5 # IPv6 yerel bağlantıları: Bütün konak :: 1/128 md5 – Andy

+0

bağlanmak istediğiniz gibi görünüyor Bir Docker kabının içindeki bir uygulamadan ana bilgisayarda bir PostgreSQL kurulumu. Eğer durum buysa, http://stackoverflow.com/questions/31249112/allow-docker-container-to-connect-to-a-local-host-postgres-database –

cevap

4

. Yani, pg_hba.conf dosyanızın, bu host all all YourDockerip/24 md5 gibi bir satıra sahip olması gerekir.

Bundan sonra postgresql.conf dosyasını yapılandırın. Herkese listen_addresses'u güncellemelisiniz ve # işaretini kaldırarak bu satırı rahatsız etmediğinizden emin olmalısınız. Yani listen_addresses, bu listen_addresses = '*' gibi görünmelidir.

+0

Üzgünüm hala kafamı alıyorum docker çevresinde. Docker makinesi için ip mi yoksa konteyner için ip mi demek istiyorsun? Eğer ikincisiyse; Bu konteynerleri yukarı ve aşağı doğru dinamik olarak döndürmeyi planladığımdan, docker'dan herhangi birini/hepsini dinlemenin bir yolu var. – Andy

+1

Tüm ip adreslerini dinlemek için '0.0.0.0/0' kullanabilirsiniz. Dosyaları yapılandırdıktan sonra postgreSQL sunucusunu yeniden başlattınız mı? –

İlgili konular