How to connect from docker-compose to Host PostgreSQL?
Solution 1
Updated Apri, 2018
According to the document, from version 18.03 onwards, using host.docker.internal
as DNS works for me, without specifying neither --net=host
or network_mode: "host"
Solution 2
This would have worked if you were on linux OS. But this won't work on Mac or Windows. The thing is that when you use --net=host
, you still are not on host network. That is the limitation of how docker for windows work
Instead of localhost you need to use docker.for.win.localhost
as the host. This is a special DNS name which is available on Docker for Windows when you want to refer to the host localhost
Max
Updated on June 14, 2022Comments
-
Max almost 2 years
I have a server with installed PostgreSQL. All my services work in containers (docker-compose). I want to use my Host PostgreSQL from containers. Buy I have the error:
Unable to obtain Jdbc connection from DataSource (jdbc:postgresql://localhost:5432/shop-bd) for user 'shop-bd-user': Connection to localhost:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ SQL State : 08001 Error Code : 0 Message : Connection to localhost:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections. Connection to localhost:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections. Connection refused (Connection refused)
My docker-compose is using host network_mode, like this:
version: '3' services: shop: container_name: shop build: ./shop hostname: shop restart: always ports: - 8084:8084 network_mode: "host"
My database connection URL is: jdbc:postgresql://localhost:5432/shop-bd
-
Max over 6 yearsI use
--net=host
, so I can uselocalhost
. I think, that the problem occurs because of Windows. -
whites11 over 6 yearsYeah, you're right I missed that you are using host networking.
-
Brendan Goggin over 5 yearsIncredibly helpful. Please upvote and accept this answer!
-
Max over 5 years@BrendanGoggin sure
-
030 about 5 years
This is for development purpose and will not work in a production environment outside of Docker Desktop for Mac