PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Używasz Dockera do uruchamiania aplikacji internetowej, nie możesz połączyć się z Postgresql DB?

Dlaczego NIE mogę połączyć się z hostem lokalnym:5432?

Cat /etc/hosts kontenera

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

W przypadku sieci Docker jest bridge domyślnie localhost Wewnątrz wskazuje na sam kontener (domyślna sieć mostka Dockera ).W takim razie nie masz 5432 słuchanie w Twoim kontenerze:

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

Rozwiązanie 1. Jeśli chcesz na stałe zakodować „localhost:5432” w pliku xml konfiguracji, najłatwiejszym sposobem jest utworzenie kontenera z opcją „--net=host”:

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

Rozwiązanie 2. Zmień localhost adresu IP hosta dockera w kontenerze
  • Uzyskaj adres IP hosta platformy Docker
    $ sudo docker inspect -f '{{ .NetworkSettings.Gateway }}' 
    192.168.5.1
  • Wprowadź swój kontener:
    $ sudo docker exec -it [container] /bin/bash
  • Edytuj plik /etc/hosts aby wskazać hostowi lokalnemu adres IP hosta dockera :
    $ sudo vim /etc/hosts
    192.168.5.1 localhost

Rozwiązanie 3. Zmodyfikuj plik konfiguracyjny db, aby używał aliasu zamiast localhost :

connectionURL="jdbc:postgresql://DB_ALIAS/admin?stringtype=unspecified"
Następnie dodaj DB_ALIAS do hostów kontenera :
$ 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. Jak dodać kolumnę, jeśli nie istnieje w PostgreSQL?

  2. Indeks PostgreSQL w JSON

  3. Kontener Postgres ulega awarii, gdy `pliki bazy danych są niezgodne z serwerem` po zaktualizowaniu obrazu kontenera do najnowszej wersji

  4. Symbol wieloznaczny PostgreSQL LIKE dla dowolnej listy słów

  5. Wytnij ciąg po pierwszym wystąpieniu znaku