如何从Docker容器访问主机数据库?

如何从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?

+0

[从Docker容器内部,如何连接到本机的本地主机?](https://stackoverflow.com/questions/24319662/from-inside-of-a-docker-container如何做我连接到本地主机) –

+0

你看到什么错误? – Robert

+0

'无法连接:**(DBConnection.ConnectionError)tcp connect(127.0.0.1:5432):连接拒绝 - :econnrefused' – squixy

我认为你的问题是在网络参数。在文档中讨论 - 网络

docker run --rm -e "DATABASE_URL=postgresql://postgres:[email protected]:5432/my_db" --network="host" -p 4000:4000 my_image 
+0

实际上没有区别。 – squixy

+0

您使用的基本图像是什么? – German

您的设置应该正常工作,所以问题可能与PostgreSQL的配置有关。我能想到的第一个潜在配置设置是bind address。默认情况下,它被设置为只接受来自localhost的连接,但由于Docker容器将拥有自己的IP地址,PostgreSQL将不接受来自容器的流量。尝试将其设置为listen_addresses(0.0.0.0)以查看这是否解决了您的问题。

也要小心总是使用127.0.0.1作为地址,因为localhost并不总是工作。

+0

我目前有'listen_addresses ='*''。 – squixy