mirror of
https://github.com/alexhopeoconnor/dnsmasq-webui.git
synced 2026-10-18 05:41:42 +10:00
- DnsmasqOptionsValidator: fail-fast at startup if MainConfigPath/HostsPath missing or files do not exist; clear stderr message before exit - Program: AddOptions + ValidateOnStart; catch OptionsValidationException, print prominent error and Environment.Exit(1) - CORS: configurable via Cors:Enabled, Cors:PolicyName, AllowedOrigins, etc. (appsettings + env); default disabled - HTTPS: ForwardedHeaders (when enabled) and Https:UseRedirectAndHsts (appsettings + env); default disabled - HttpClient: IHttpClientFactory + SameHostBaseAddressHandler for same-host API calls; default client uses Options.DefaultName - publish-self-contained.sh: platform auto-detect, clean before publish, --no-clean option, RIDs including ubuntu.*-x64/arm64, linux-musl-* - prepare-test-mount.sh: stop/tidy options - EnsureManagedConfigHostedService / DnsmasqConfigSetService: managed config path and conf-file= handling - appsettings: ForwardedHeaders, Https, Cors sections; Dnsmasq defaults Note: Dockerfile.dnsmasq removed (may need restore for app+dnsmasq image)
46 lines
1.4 KiB
YAML
46 lines
1.4 KiB
YAML
# Run the app with real dnsmasq and a DHCP client so hosts/leases are real.
|
||
# 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).
|
||
#
|
||
# app builds from Dockerfile (app + dnsmasq in one container; app is main process).
|
||
# ReloadCommand/StatusCommand use pkill/pgrep (procps in image). 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__HostsPath: /data/hosts
|
||
Dnsmasq__ReloadCommand: "pkill -HUP -x dnsmasq"
|
||
Dnsmasq__StatusCommand: "pgrep -x dnsmasq"
|
||
volumes:
|
||
- ${TESTDATA_MOUNT:-./testdata-mount}:/data
|
||
networks:
|
||
testnet:
|
||
ipv4_address: 172.28.0.2
|
||
# no depends_on: app is the only service the client needs
|
||
|
||
dhcp-client:
|
||
image: alpine:3.20
|
||
command: ["sh", "-c", "sleep 5 && 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
|