65 lines
1.6 KiB
YAML
65 lines
1.6 KiB
YAML
# VibeDNS via Docker Compose.
|
|
#
|
|
# docker compose up -d
|
|
# docker compose logs vibedns # the generated admin password is printed once
|
|
#
|
|
# Then open http://127.0.0.1:8080 and sign in as "admin".
|
|
|
|
services:
|
|
vibedns:
|
|
build:
|
|
context: .
|
|
args:
|
|
VERSION: "0.1.0"
|
|
image: vibedns:latest
|
|
container_name: vibedns
|
|
restart: unless-stopped
|
|
|
|
ports:
|
|
# DNS needs both transports: TCP is not optional, it is how large
|
|
# answers are carried after a truncated UDP reply.
|
|
- "53:53/udp"
|
|
- "53:53/tcp"
|
|
# The management interface is bound to loopback on the host. Reach it
|
|
# over SSH or a VPN rather than exposing it to the network.
|
|
- "127.0.0.1:8080:8080/tcp"
|
|
|
|
volumes:
|
|
- vibedns-data:/var/lib/vibedns
|
|
|
|
environment:
|
|
VIBEDNS_DB_PATH: /var/lib/vibedns/dns.db
|
|
VIBEDNS_HTTP_ADDR: 0.0.0.0:8080
|
|
VIBEDNS_DNS_ADDR: 0.0.0.0:53
|
|
VIBEDNS_LOG_LEVEL: info
|
|
VIBEDNS_LOG_FORMAT: text
|
|
# Set your own initial password instead of the generated one:
|
|
# VIBEDNS_ADMIN_USERNAME: admin
|
|
# VIBEDNS_ADMIN_PASSWORD: change-me-to-something-long
|
|
|
|
# Binding port 53 without running the whole container as root.
|
|
cap_drop:
|
|
- ALL
|
|
cap_add:
|
|
- NET_BIND_SERVICE
|
|
|
|
security_opt:
|
|
- no-new-privileges:true
|
|
|
|
healthcheck:
|
|
test: ["CMD", "wget", "-qO-", "http://127.0.0.1:8080/healthz"]
|
|
interval: 30s
|
|
timeout: 5s
|
|
retries: 3
|
|
start_period: 10s
|
|
|
|
logging:
|
|
driver: json-file
|
|
options:
|
|
max-size: "10m"
|
|
max-file: "3"
|
|
|
|
volumes:
|
|
vibedns-data:
|
|
driver: local
|