this post was submitted on 26 Jul 2024
17 points (94.7% liked)

Selfhosted

61546 readers
103 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:

Detailed Rules Post

  1. Be civil.

  2. No spam.

  3. Posts are to be related to self-hosting.

  4. Don't duplicate the full text of your blog or readme if you're providing a link.

  5. Submission headline should match the article title.

  6. No trolling.

  7. Promotion posts require active participation, with an account that is at least 30 days old. F/LOSS without a paywall has exceptions, with requirements. See the rules link for details. Tags [CBH] or [AIP] are required, see the links in Rule 8 for details.

  8. AI-related discussions and AI-involved promotional posts have additional requirements for tagging, as noted in Rule 7 and the AI & Promotional Post Expanded Rules post, and find example disclosures here.

Resources:

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

Questions? DM the mods!

founded 3 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
[–] morethanevil@lemmy.fedifriends.social 8 points 2 years ago* (last edited 2 years 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.

[–] Deemo@bookwormstory.social 2 points 2 years ago

Thanks for the tip

[–] MangoPenguin@lemmy.blahaj.zone 3 points 2 years ago

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

[–] superpants@lemmy.world 2 points 2 years ago
[–] just_another_person@lemmy.world 1 points 2 years 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?

[–] Deemo@bookwormstory.social 1 points 2 years 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.

[–] lorentz@feddit.it 1 points 2 years 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>

[–] KaninchenSpeed@sh.itjust.works 1 points 2 years ago* (last edited 2 years 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.

[–] possiblylinux127@lemmy.zip 1 points 2 years ago

Put them on the same network