80 lines
2.3 KiB
YAML
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
|