Malte
Malte

Reputation: 347

How to make postgres.app db accessible to docker container?

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

Answers (3)

Nour Wolf
Nour Wolf

Reputation: 2180

Few things

  • Use docker.for.mac.localhost as your HOST (This assumes you have the latest Docker for Mac as @Pete mentioned)
  • Make sure there is such a record in ~/Library/Application Support/Postgres/var-9.6/pg_hba.conf

host all all 0.0.0.0/0 trust

  • Change this line 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

Pete
Pete

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

From the docs:

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

opHASnoNAME
opHASnoNAME

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

Related Questions