如何从Docker容器访问主机数据库?
问题描述:
我有PostgreSQL数据库在本地运行,并且有一个Docker容器和一个想要连接的应用程序。如何从Docker容器访问主机数据库?
如何从Docker内部访问localhost DB?
docker run --rm -e "DATABASE_URL=postgresql://postgres:[email protected]:5432/my_db" --network="host" -p 4000:4000 my_image
以上似乎并不奏效。这一个:From inside of a Docker container, how do I connect to the localhost of the machine?
答
我认为你的问题是在网络参数。在文档中讨论 - 网络
docker run --rm -e "DATABASE_URL=postgresql://postgres:[email protected]:5432/my_db" --network="host" -p 4000:4000 my_image
答
您的设置应该正常工作,所以问题可能与PostgreSQL的配置有关。我能想到的第一个潜在配置设置是bind address。默认情况下,它被设置为只接受来自localhost的连接,但由于Docker容器将拥有自己的IP地址,PostgreSQL将不接受来自容器的流量。尝试将其设置为listen_addresses(0.0.0.0)
以查看这是否解决了您的问题。
也要小心总是使用127.0.0.1
作为地址,因为localhost
并不总是工作。
+0
我目前有'listen_addresses ='*''。 – squixy
[从Docker容器内部,如何连接到本机的本地主机?](https://stackoverflow.com/questions/24319662/from-inside-of-a-docker-container如何做我连接到本地主机) –
你看到什么错误? – Robert
'无法连接:**(DBConnection.ConnectionError)tcp connect(127.0.0.1:5432):连接拒绝 - :econnrefused' – squixy