如何让docker容器可以访问postgres.app数据库?
我得到了postgres.app在我的Mac本地运行,并希望我的本地docker容器能够连接到它。 我如何最好地做到这一点?
我发现这个post,build议使用–add-host标志( 数据库到Docker容器的主机端口 )将Docker主机的IP地址传递到容器 。 但是,我的笔记本电脑的IP地址经常变化。 有没有更简单的方法来做到这一点? 有没有一种简单的方法来打开本地端口到容器?
一些事情
- 使用
docker.for.mac.localhost
作为你的HOST(这里假定你有docker.for.mac.localhost
提到的最新的Docker for Mac) - 确保
~/Library/Application Support/Postgres/var-9.6/pg_hba.conf
有这样的logging
host all all 0.0.0.0/0 trust
- 在
~/Library/Application Support/Postgres/var-9.6/postgresql.conf
更改这一行listen_addresses = 'localhost'
至
listen_addresses = '*'
要么
listen_addresses = 'localhost, docker.for.mac.localhost'
如果我们正在谈论开发人员工作站,则可以在主机networking中启动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地址(如果你没有networking访问权限,则没有)。 从17.06开始,我们的build议是连接到特殊的仅限于Mac的DNS名称
docker.for.mac.localhost
,该名称将parsing为主机使用的内部IP地址。
注意:这需要Docker for Mac >= 17.06.0-ce-mac18, 2017-06-28