我在Mac上在本地运行了Postgres.App,希望我的本地Docker容器能够连接到它。我该如何最好地做?
我找到了建议使用-Add-host标志(带有DB到Docker容器的主机端口)将Docker主机的IP地址传递给容器的帖子。但是,我的笔记本电脑的IP地址经常更改。没有一个更简单的方法吗?没有一种简单的方法可以打开容器的本地端口吗?
几件事
- 使用
docker.for.mac.localhost
作为主机(这是您有@pete的最新码头,如@pete所述) - 确保
~/Library/Application Support/Postgres/var-9.6/pg_hba.conf
中有这样的记录
host all all 0.0.0.0/0 trust
- 在
~/Library/Application Support/Postgres/var-9.6/postgresql.conf
中更改此行listen_addresses = 'localhost'
to
listen_addresses = '*'
或
listen_addresses = 'localhost, docker.for.mac.localhost'
如果我们在谈论开发人员工作站,则可以在主机网络内启动docker容器。
docker run --net=host myContainer
因此,您的容器与主机在同一堆栈中运行,并且应该能够访问您的postgres.app。
从您的容器中,尝试连接到主机名docker.for.mac.localhost
。例如:
psql -U my_user docker.for.mac.localhost -U my_user my_database
来自文档:
Mac的IP地址更改(如果您没有网络,则没有 使用权)。从17.06开始,我们的建议是连接到 特殊的仅Mac-inly DNS名称
docker.for.mac.localhost
将解决 到主机使用的内部IP地址。
注意:这需要Mac >= 17.06.0-ce-mac18, 2017-06-28