47 lines
1.4 KiB
YAML
47 lines
1.4 KiB
YAML
services:
|
|
# --- Node 1 (Primary) ---
|
|
dns:
|
|
image: technitium/dns-server:latest
|
|
container_name: 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
|
|
- /docker/dns/config:/etc/dns
|
|
networks:
|
|
dns_internal:
|
|
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"
|
|
|
|
# --- 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:
|
|
internal: true
|
|
dns_external:
|
|
external: true
|