Я создал экземпляр Докер Postgres сНевозможно подключиться к dockerized Postgres на локальном хосте, но удаленное соединение работает
docker run -d \
--name test_db \
-v data:/var/lib/postgresql/data \
-e "POSTGRES_PASSWORD=abcdefghij" \
-e "POSTGRES_USER=testuser" \
-p 5432:5432 \
postgres
я могу правильно подключиться к этой базе данных из других хостов, использующих общественный IP-адрес сервера, например.
psql -U testuser -h 111.111.111.111 -d testuser // in reality I use proper IP
, но если я хочу сделать это на том же хосте, где контейнер, это невозможно подключиться (он просто зависает).
Мой pg_hba.conf (внутри контейнера)
# TYPE DATABASE USER ADDRESS METHOD
local all all trust
host all all 127.0.0.1/32 trust
host all all ::1/128 trust
host all all 0.0.0.0/0 md5
Внутри postgresql.conf есть строка:
listen_addresses = '*'
Соответствующие линии IPTables:
$ iptables -L | grep sql
ACCEPT tcp -- anywhere 172.19.0.2 tcp dpt:postgresql
Кроме того, это работает локально, если я использую адрес 172.19.0.2, но если я использую публичный IP-адрес, он просто зависает. Я понятия не имею, почему это так. У меня есть мое приложение, распределенное между многими хостами, в том числе с БД, и я не хочу использовать другой адрес в зависимости от местоположения. Может ли кто-нибудь помочь в этом?
Два тестовых серверов просто нормальный чистый VPS на ArubaCloud. Я не уверен, есть ли какой-либо NAT, но этого не должно быть. Я попробую перенаправить с помощью iptables и скажу, если это сработает. – Valar