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

我有本地运行的PostgreSQL数据库和一个需要连接的应用程序的Docker容器。

如何从docker内部访问localhost数据库?

docker run --rm -e "DATABASE_URL=postgresql://postgres:postgres@127.0.0.1:5432/my_db" --network="host" -p 4000:4000 my_image 

以上似乎并没有工作。 这一个: 从Docker容器的内部,我该如何连接到本机的本地主机?

我认为你的问题是在networking参数。 在文档中讨论–network

 docker run --rm -e "DATABASE_URL=postgresql://postgres:postgres@127.0.0.1:5432/my_db" --network="host" -p 4000:4000 my_image 

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

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