ホスト側からDockerのPostgreSQLに接続する方法(Docker for Macの場合)

Docker for macの各コンテナへホスト側からアクセスする際のアドレスは、localhostです。
docker-machineの場合はdocker-machine envでIPアドレスを確認をする必要があるので、その点楽ですね。

しかしlocalhostゆえにホスト側のシステムとバッティングし、うまくコンテナにアクセスできない場合が出てきます。

それが今回はまったDockerのPostgreSQLへのホスト側からアクセスです。

通常ホスト側からコンテナのPostgreSQLにアクセスする場合はオプションで-h localhostを指定すれば可能です。

$  psql -U ユーザー名 -d DB名 -h localhost

しかし、もしホスト側のPostgreSQLが起動している場合、psqlで自動的にホスト側のサーバーにアクセスしてしまうためロール又は、DBが存在しません。というエラーが出てしまいます。

その解決方法としてはlocalのPostgreSQLのサーバーを停止することです。
brewでinstallしている場合は以下コマンドでホスト側のPostgreSQLの停止を行えます。

$ launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

再度

$  psql -U ユーザー名 -d DB名 -h localhost

でアクセスすればDockerのPostgreSQLにアクセスできるはずです。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.