3

我让 postgres.app 在我的 Mac 上本地运行,并希望我的本地 docker 容器能够连接到它。我怎样才能最好地做到这一点?

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

4

3 回答 3

4

一些事情

  • docker.for.mac.localhost用作您的主机(这假设您拥有@Pete 提到的最新的 Docker for Mac )
  • 确保有这样的记录~/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'

于 2017-07-26T10:46:02.827 回答
0

从您的容器中,尝试连接到 hostname docker.for.mac.localhost。例如:

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

从文档

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

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

于 2017-07-07T17:27:47.847 回答
0

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

docker run --net=host myContainer

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

于 2017-02-28T06:46:08.223 回答