mapletree/dns/docker-compose.yml
2026-01-26 16:03:22 +00:00

80 lines
2.3 KiB
YAML

services:
# --- Node 1 (Primary) ---
dns-01:
image: technitium/dns-server:latest
container_name: dns-01
hostname: dns-01
restart: unless-stopped
ports:
- "53:53/udp" # Live DNS
- "53:53/tcp"
- "5381:5380/tcp" # Web UI -> 5381
environment:
- TZ=America/Edmonton
- DNS_SERVER_DOMAIN=dns1.mapletree.email
- DNS_SERVER_ADMIN_PASSWORD=${DNS_ADMIN_PASSWORD}
volumes:
#- ${CONFIG_PATH}/primary:/etc/dns/config
- ./primary:/etc/dns
networks:
dns_internal:
ipv4_address: 172.35.0.101
dns_external: {}
labels:
- "traefik.enable=true"
- "traefik.docker.network=dns_external"
- "traefik.http.routers.dns01.rule=Host(`dns1.mapletree.email`)"
- "traefik.http.routers.dns01.entrypoints=web,websecure"
- "traefik.http.routers.dns01.tls.certresolver=myresolver"
- "traefik.http.services.dns01.loadbalancer.server.port=5380"
# --- Node 2 (Secondary) ---
dns-02:
image: technitium/dns-server:latest
container_name: dns-02
hostname: dns-02
restart: unless-stopped
ports:
- "5301:53/udp" # Testing DNS
- "5301:53/tcp"
- "5382:5380/tcp" # Web UI -> 5382
environment:
- TZ=America/Edmonton
- DNS_SERVER_DOMAIN=dns2.mapletree.email
- DNS_SERVER_ADMIN_PASSWORD=${DNS_ADMIN_PASSWORD}
volumes:
#- ${CONFIG_PATH}/secondary:/etc/dns/config
- ./secondary:/etc/dns
networks:
dns_internal:
ipv4_address: 172.35.0.102
dns_external: {}
labels:
- "traefik.enable=true"
- "traefik.docker.network=dns_external"
- "traefik.http.routers.dns02.rule=Host(`dns2.mapletree.email`)"
# ... (Standard Traefik labels) ...
- "traefik.http.services.dns02.loadbalancer.server.port=5380"
# --- Metrics Sidecar ---
dns-exporter:
image: ghcr.io/guycalledseven/technitium-dns-prometheus-exporter:latest
container_name: dns-exporter
restart: unless-stopped
environment:
# Note the simplified variable names
- TECHNITIUM_BASE_URL=http://172.35.0.101:5380
- TECHNITIUM_TOKEN=${DNS_API_TOKEN}
ports:
- "8081:9105" # Maps container 8080 to host 8081
networks:
- dns_internal
networks:
dns_internal:
driver: bridge
ipam:
config:
- subnet: 172.35.0.0/24
dns_external:
external: true