我让 postgres.app 在我的 Mac 上本地运行,并希望我的本地 docker 容器能够连接到它。我怎样才能最好地做到这一点?
我发现这篇文章建议使用 --add-host 标志(带有 DB 的主机端口到 Docker 容器)将 Docker 主机的 IP 地址传递给容器。但是,我的笔记本电脑的 IP 地址经常更改。没有更简单的方法吗?没有一种简单的方法可以向容器打开本地端口吗?
我让 postgres.app 在我的 Mac 上本地运行,并希望我的本地 docker 容器能够连接到它。我怎样才能最好地做到这一点?
我发现这篇文章建议使用 --add-host 标志(带有 DB 的主机端口到 Docker 容器)将 Docker 主机的 IP 地址传递给容器。但是,我的笔记本电脑的 IP 地址经常更改。没有更简单的方法吗?没有一种简单的方法可以向容器打开本地端口吗?
一些事情
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'
从您的容器中,尝试连接到 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
如果我们谈论的是开发人员工作站,您可以在主机网络中启动您的 Docker 容器。
docker run --net=host myContainer
因此,您的容器与您的主机在同一堆栈中运行,并且应该能够访问您的 postgres.app。