docker 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 を使用するとハングします。なぜそうなのか、私にはわかりません。DB を含む多くのホストにアプリケーションを分散させていますが、場所によっては他のアドレスを使用したくありません。誰かがこれを手伝ってくれますか?