如何使dockgres.app db可以访问docker容器?

时间:2017-02-28 06:08:23

标签: postgresql docker docker-compose postgres.app

我在我的Mac上运行本地运行的postgres.app,并希望我的本地docker容器能够连接到它。我该如何做到最好?

我发现这篇文章建议使用--add-host标志(Host port with DB to Docker container)将Docker主机的IP地址传递给容器。但是,我的笔记本电脑的IP地址经常变化。难道没有更简单的方法吗?难道没有一种简单的方法可以打开容器的本地端口吗?

3 个答案:

答案 0 :(得分:3)

很少有事情

  • 使用docker.for.mac.localhost作为您的主机(假设您有最新的Docker for Mac,如@Pete所述)
  • 确保~/Library/Application Support/Postgres/var-9.6/pg_hba.conf
  • 中有此类记录

host all all 0.0.0.0/0 trust

  • listen_addresses = 'localhost'
  • 中更改此行~/Library/Application Support/Postgres/var-9.6/postgresql.conf

listen_addresses = '*'

listen_addresses = 'localhost, docker.for.mac.localhost'

答案 1 :(得分:0)

如果我们谈论的是开发人员工作站,您可以在主机网络中启动Docker容器。

docker run --net=host myContainer

因此,您的容器与您的主机在同一堆栈中运行,并且应该能够访问您的postgres.app。

答案 2 :(得分:0)

从容器中尝试连接到主机名docker.for.mac.localhost。例如:

psql -U my_user docker.for.mac.localhost -U my_user my_database

From the docs

  

Mac有一个不断变化的IP地址(如果你没有网络,则没有   访问)。从17.06开始,我们的建议是连接到   将解析的特殊Mac-only DNS名称docker.for.mac.localhost   到主机使用的内部IP地址。

注意:这需要Docker for Mac >= 17.06.0-ce-mac18, 2017-06-28