Hi guys quick question say you run a a application on your localhost (example lets say couchdb runing directly on localhost:3434 not in docker).
Now you have a docker container (say caddy, ngnix, etc). Is there a way to allow docker container to acess localhost:3434 WITHOUT using the Host network driver (–net=host)
Add this to the service in your docker-compose.yml
extra_hosts: - host.docker.internal:host-gateway
Example:
services: redis: restart: always container_name: redis image: redis:7.2-alpine extra_hosts: - host.docker.internal:host-gateway
Then you can reach your host from inside the container via
host.docker.internal:3434
host.docker.internal
is like your “localhost” on the host. It is a special DNS name.You have a lot of options: https://docs.docker.com/network/drivers/
What’s specifically the issue with the host driver in this case?
My solution is to create a docker network with the macvlan driver connected to a bridge interface on the host. Then you make the database listen on the bridge or just leave it on all interfaces. Don’t forget to configure the ips.
I can share my config later.
Have you tried the IP of the host? IIRC that should work.
You can use the flag
–add-host myname=host-gateway
in your container “myname” will resolve as the IP of your host.
documentation at: https://docs.docker.com/reference/cli/docker/container/run/#add-host>