PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Използване на Docker за стартиране на уеб приложение, не можете да се свържете с Postgresql DB?

Защо НЕ мога да се свържа с localhost:5432?

Cat /etc/hosts на вашия контейнер

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

За докер мрежи е bridge по подразбиране, localhost вътре сочи към самия контейнер (Мостова мрежа по подразбиране на Docker ).Тогава нямате 5432 слушане във вашия контейнер:

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

Решение 1. Ако искате да кодирате твърдо "localhost:5432" във вашия xml файл за конфигурация, най-лесният начин е да създадете контейнер с опцията "--net=host":

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

Решение 2. Променете localhost на вашия ip хост докер вътре в контейнера
  • Вземете своя IP адрес на докер хост
    $ sudo docker inspect -f '{{ .NetworkSettings.Gateway }}' 
    192.168.5.1
  • Въведете своя контейнер:
    $ sudo docker exec -it [container] /bin/bash
  • Редактирайте файла /etc/hosts за да насочите локалния хост към IP адрес на докерски хост :
    $ sudo vim /etc/hosts
    192.168.5.1 localhost

Решение 3. Променете своя db конфигурационен файл, за да използвате псевдоним вместо localhost :

connectionURL="jdbc:postgresql://DB_ALIAS/admin?stringtype=unspecified"
След това добавете DB_ALIAS към хостовете на контейнера:
$ 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. Hibernate не създава таблица в базата данни

  2. Защо планиращият извежда различни резултати за функции с различна променливост?

  3. как да накарам array_agg() да работи като group_concat() от mySQL

  4. Променете имената на колоните в таблицата с главни букви в postgre

  5. PostgreSQL Висока наличност с архитектури Master-Slave и Master-Master