Мне трудно понять, как заставить DNS работать для связи между контейнерами. У меня есть dnsmasq и Traefik, а также куча других сервисов. Приведенный ниже docker -compose.yml - это урезанная версия, иллюстрирующая мою настройку.
По сути, я хочу направить контейнеры и внешний трафик c в поисках * .domain.test в контейнер Traefik. , Я ходил кругами в поисках элегантного способа сделать это. Любая помощь очень ценится.
После поднятия стека я запускаю:
docker run --rm --network=traefik praqma/network-multitool dig domain.test
и получаю:
; <<>> DiG 9.14.8 <<>> domain.test
;; global options: +cmd
:: connection timed out; no servers could be reached
docker -compose.yml
version: "3.7"
networks:
dns: {}
traefik:
name: traefik
volumes:
heimdall-data:
services:
dnsmasq:
cap_add:
- NET_ADMIN
command:
- --cache-size=1000
- --local-ttl=10
- --address=/.domain.test/192.168.1.10
- --address=/#/0.0.0.0
container_name: dnsmasq
image: andyshinn/dnsmasq:2.78
labels:
traefik.enable: "False"
networks:
dns: null
ports:
- "53:53/tcp"
- "53:53/udp"
restart: unless-stopped
traefik:
command:
- --api.insecure=true
- --providers.docker=true
- --providers.docker.exposedbydefault=true
- --entrypoints.web.address=:80
- --log.level=ERROR
container_name: traefik
image: traefik:2.1
labels:
traefik.enable: "true"
traefik.http.routers.api.entrypoints: web
traefik.http.routers.api.rule: Host(`traefik.domain.test`)
traefik.http.routers.api.service: api@internal
networks:
traefik: null
ports:
- 80:80
- 443:443
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
heimdall:
container_name: heimdall
image: linuxserver/heimdall:2.2.2-ls66
labels:
traefik.docker.network: traefik
traefik.http.routers.heimdall.entrypoints: web
traefik.http.routers.heimdall.rule: Host(`www.domain.test`, `domain.test`)
networks:
traefik: null
restart: unless-stopped
volumes:
- heimdall-data:/config:rw