PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Menggunakan Docker untuk meluncurkan aplikasi web, tidak dapat terhubung ke Postgresql DB?

Mengapa saya TIDAK dapat terhubung ke localhost:5432?

Cat /etc/hosts penampung Anda

$ sudo docker exec -it [container] cat /etc/hosts

Untuk jaringan buruh pelabuhan adalah bridge secara default, localhost inside menunjuk ke container itu sendiri(Jaringan jembatan default Docker ). Maka Anda tidak memiliki 5432 mendengarkan di wadah Anda:

$ sudo docker exec [container] nc -v -z localhost 5432

Solusi 1. Jika Anda ingin membuat hardcode "localhost:5432" di dalam xml konfigurasi Anda, cara termudah adalah membuat wadah Anda dengan opsi "--net=host":

$ sudo docker run --net=host -it ...

Solusi 2. Ubah localhost dari ip host buruh pelabuhan Anda di dalam wadah
  • Dapatkan ip host buruh pelabuhan
    $ sudo docker inspect -f '{{ .NetworkSettings.Gateway }}' 
    192.168.5.1
  • Masukkan wadah Anda:
    $ sudo docker exec -it [container] /bin/bash
  • Edit file /etc/hosts untuk mengarahkan localhost ke ip host buruh pelabuhan :
    $ sudo vim /etc/hosts
    192.168.5.1 localhost

Solusi 3. Ubah file konfigurasi db Anda untuk menggunakan alias alih-alih localhost :

connectionURL="jdbc:postgresql://DB_ALIAS/admin?stringtype=unspecified"
Kemudian tambahkan DB_ALIAS ke host container :
$ sudo docker run --add-host DB_ALIAS:192.168.5.1 -it [image] ...


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pencarian teks Django dengan pembaruan pencocokan kalimat parsial ke django3

  2. Setel string kosong ('') ke NULL di seluruh database

  3. Bagaimana saya bisa mengonfigurasi PostgreSQL untuk menggunakan Otentikasi Windows?

  4. PGAadmin menunjukkan jumlah database yang berlebihan dari Heroku

  5. Python psycopg2 cursor.fetchall() mengembalikan daftar kosong tetapi cursor.rowcount> 1