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] ...