Files
dnsmasq-webui/docker-compose.test.yml
T
alex 1bdd176c18 App logs, client settings, NavMenu layout
- Add real-time app logs via SignalR (log level, category filters)
- Add filters modal with restore defaults; sentinel for empty arrays
- Add client settings: max lines and auto-scroll per log panel
- Improve NavMenu: align settings + hamburger, smaller mobile logo
- LogsService, LogsHub, LoggingController, AppLogsLoggerProvider
- Persist log level and filters to appsettings.Overrides.json
2026-02-10 08:44:30 +10:00

100 lines
3.1 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Run the app with real dnsmasq and several DHCP clients so hosts/leases are real.
# Some clients also make periodic DNS requests so the DNS cache and logs show activity.
# Prepare mount: ./scripts/prepare-test-mount.sh [--prepare-only | --no-build | --recreate | --source DIR | --mount DIR]
# Or set TESTDATA_MOUNT to override the data volume (default: ./testdata-mount).
#
# No systemd in container (dnsmasq runs as a process from entrypoint, like most dnsmasq images).
# StatusShowCommand/LogsCommand use ps so the Service status / Recent logs sections show something
# (process info). On a host with systemd you'd use systemctl status dnsmasq and journalctl instead.
# cap_add NET_ADMIN for dnsmasq.
#
# Networks: testnet 172.28.0.0/16 so dnsmasq can hand out 172.28.0.10–50.
services:
app:
build:
context: .
ports:
- "8080:8080"
cap_add:
- NET_ADMIN
environment:
DNSMASQ_CONF: /data/dnsmasq-test.conf
Dnsmasq__MainConfigPath: /data/dnsmasq-test.conf
Dnsmasq__ManagedFileName: zz-dnsmasq-webui.conf
Dnsmasq__ReloadCommand: "pkill -HUP -x dnsmasq"
Dnsmasq__StatusCommand: "pgrep -x dnsmasq"
# Simulated systemctl status + real logs (dnsmasq logs to /data/dnsmasq.log via log-facility in dnsmasq-test.conf)
Dnsmasq__StatusShowCommand: "/app/dnsmasq-status.sh"
Dnsmasq__LogsCommand: "tail -n 100 /data/dnsmasq.log 2>/dev/null || echo '(no log file yet)'"
# Persist runtime log level across container restarts
RuntimeOverrides__FilePath: "/data/appsettings.Overrides.json"
volumes:
- ${TESTDATA_MOUNT:-./testdata-mount}:/data
networks:
testnet:
ipv4_address: 172.28.0.2
# DHCP only; keeps running with lease.
dhcp-client:
image: alpine:3.20
command: ["sh", "-c", "sleep 5 && exec udhcpc -i eth0 -f -n"]
networks:
testnet: {}
depends_on:
- app
# DHCP + periodic DNS lookups (every 20s) so DNS cache/logs show activity.
dhcp-client-dns-a:
image: alpine:3.20
command:
- sh
- -c
- |
udhcpc -i eth0 -f -n &
sleep 10
while true; do
nslookup google.com 2>/dev/null || true
nslookup cloudflare.com 2>/dev/null || true
sleep 20
done
networks:
testnet: {}
depends_on:
- app
# DHCP + periodic DNS lookups (every 45s); different interval for variety.
dhcp-client-dns-b:
image: alpine:3.20
command:
- sh
- -c
- |
udhcpc -i eth0 -f -n &
sleep 10
while true; do
nslookup example.com 2>/dev/null || true
nslookup github.com 2>/dev/null || true
sleep 45
done
networks:
testnet: {}
depends_on:
- app
# Third DHCP-only client so the leases table has more entries.
dhcp-client-2:
image: alpine:3.20
command: ["sh", "-c", "sleep 8 && exec udhcpc -i eth0 -f -n"]
networks:
testnet: {}
depends_on:
- app
networks:
testnet:
driver: bridge
ipam:
config:
- subnet: 172.28.0.0/16
gateway: 172.28.0.1