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.Thanks for the tip
Have you tried the IP of the host? IIRC that should work.
Put them on the same network
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>
You have a lot of options: https://docs.docker.com/network/drivers/
What’s specifically the issue with the host driver in this case?
I should elaborate. I want to switch from caddy to authentiks internal reverse proxy. By default authentik uses ports 9000 and 90443 and you have the option to change them to 80 and 443 via docker compose.
Using host mode throws a wrench in the ports and authentik is made of more than one container.
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.