localhost:5432に接続できないのはなぜですか?
コンテナの/etc/hosts
をキャットします
$ sudo docker exec -it [container] cat /etc/hosts
Dockerネットワークの場合はbridge
デフォルトでは、localhost
内部はコンテナ自体を指します(Dockerのデフォルトブリッジネットワーク
)。その後、5432
がありません コンテナで聞く:
$ sudo docker exec [container] nc -v -z localhost 5432
解決策1.configxml内に「localhost:5432」をハードコーディングする場合、最も簡単な方法は、オプション「--net=host」を使用してコンテナーを作成することです。
$ sudo docker run --net=host -it ...
解決策2.
localhost
を変更します コンテナ内のDockerホストIPの- dockerホストIPを取得 :
$ sudo docker inspect -f '{{ .NetworkSettings.Gateway }}' 192.168.5.1
- コンテナを入力します:
$ sudo docker exec -it [container] /bin/bash
- ファイル
/etc/hosts
を編集します ローカルホストをdockerhost ipにポイントします :$ sudo vim /etc/hosts 192.168.5.1 localhost
解決策3.localhost
の代わりにエイリアスを使用するようにdb構成ファイルを変更します :
connectionURL="jdbc:postgresql://DB_ALIAS/admin?stringtype=unspecified"
次に、DB_ALIAS
を追加します コンテナのホストへ:$ sudo docker run --add-host DB_ALIAS:192.168.5.1 -it [image] ...