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] ...