this post was submitted on 26 Jul 2024
18 points (95.0% liked)

Selfhosted

40415 readers
426 users here now

A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don't control.

Rules:

  1. Be civil: we're here to support and learn from one another. Insults won't be tolerated. Flame wars are frowned upon.

  2. No spam posting.

  3. Posts have to be centered around self-hosting. There are other communities for discussing hardware or home computing. If it's not obvious why your post topic revolves around selfhosting, please include details to make it clear.

  4. Don't duplicate the full text of your blog or github here. Just post the link for folks to click.

  5. Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).

  6. No trolling.

Resources:

Any issues on the community? Report it using the report flag.

Questions? DM the mods!

founded 2 years ago
MODERATORS
 

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)

top 9 comments
sorted by: hot top controversial new old
[–] [email protected] 8 points 4 months ago* (last edited 4 months ago) (1 children)

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.

[–] [email protected] 2 points 4 months ago

Thanks for the tip

[–] [email protected] 3 points 4 months ago

Have you tried the IP of the host? IIRC that should work.

[–] [email protected] 2 points 4 months ago
[–] KaninchenSpeed 1 points 4 months ago* (last edited 4 months ago)

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.

[–] [email protected] 1 points 4 months ago

Put them on the same network

[–] [email protected] 1 points 4 months ago

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>

[–] [email protected] 1 points 4 months ago (1 children)

You have a lot of options: https://docs.docker.com/network/drivers/

What's specifically the issue with the host driver in this case?

[–] [email protected] 1 points 4 months ago

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.