Reputation: 347
I got postgres.app running locally on my Mac and would like my local docker container to be able to connect to it. How do I best do this?
I found this post that suggests to pass the Docker host’s IP address to a container using the --add-host flag (Host port with DB to Docker container). However, my laptop's IP address changes frequently. Isn't there an easier way of doing this? Isn't there an easy way to open a local port to a container?
Upvotes: 3
Views: 1868
Reputation: 2180
Few things
docker.for.mac.localhost
as your HOST (This assumes you have the latest Docker for Mac as @Pete mentioned)~/Library/Application Support/Postgres/var-9.6/pg_hba.conf
host all all 0.0.0.0/0 trust
listen_addresses = 'localhost'
in ~/Library/Application Support/Postgres/var-9.6/postgresql.conf
to
listen_addresses = '*'
or
listen_addresses = 'localhost, docker.for.mac.localhost'
Upvotes: 4
Reputation: 10680
From your container, try connecting to hostname docker.for.mac.localhost
. For example:
psql -U my_user docker.for.mac.localhost -U my_user my_database
The Mac has a changing IP address (or none if you have no network access). From 17.06 onwards our recommendation is to connect to the special Mac-only DNS name
docker.for.mac.localhost
which will resolve to the internal IP address used by the host.
Note: this requires Docker for Mac >= 17.06.0-ce-mac18, 2017-06-28
Upvotes: 0
Reputation: 20726
If we are talking about a developers workstations, you could start your Docker Container inside the Host Network.
docker run --net=host myContainer
So your container runs in the same stack as your Host, and should be able to access your postgres.app.
Upvotes: 0