我有一个在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应该是什么?
答案 0 :(得分:0)
出于安全原因,Postgres服务器使其难以连接。默认情况下,您可以从localhost和127.0.0.1连接到服务器。
这在Docker内部不起作用,因为localhost是指正在运行的Docker容器而不是您的笔记本电脑。
您必须从Docker连接到笔记本电脑的IP地址。
您可以在System Preference
> Network
中的Mac上找到笔记本电脑的IP。
或者,您可以使用ifconfig | grep inet
。
您需要修改2个Postgres配置文件:
postgresql.conf
和pg_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服务器。