Защо НЕ мога да се свържа с 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] ...