Docker需要访问主机的Postgres数据库

时间:2017-06-22 18:47:11

标签: macos postgresql docker

我有一个在Docker容器内运行的Flask应用程序,我可以使用以下命令运行它。

docker run -e DB_HOST=<...> -e DB_PORT=<...> -e DB_NAME=<...> -e DB_USER=<...> -e DB_PASSWORD=<...> -p 8080:8080 <tag name>

在AWS上的数据库之前,现在数据库正在MAC笔记本电脑上运行。那么如何从Docker容器中将Flask应用程序连接到主机Postgres&#39;数据库?我的DB_HOST应该是什么?

1 个答案:

答案 0 :(得分:0)

出于安全原因,Postgres服务器使其难以连接。默认情况下,您可以从localhost和127.0.0.1连接到服务器。

这在Docker内部不起作用,因为localhost是指正在运行的Docker容器而不是您的笔记本电脑。

您必须从Docker连接到笔记本电脑的IP地址。 您可以在System Preference> Network中的Mac上找到笔记本电脑的IP。 或者,您可以使用ifconfig | grep inet

您需要修改2个Postgres配置文件: postgresql.confpg_hba.conf

对于文件:/usr/local/var/postgres/postgresql.conf

添加此行以收听所有内容:

listen_addresses = '*' # what IP address(es) to listen on;

或添加您的特定笔记本电脑IP。

对于文件/usr/local/var/postgres/pg_hba.conf,请在IP地址中添加如下一行:

host all all 192.168.1.3/32 md5

完成后重新启动Postgres服务器。