feat: add Docker infrastructure scaffold

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-14 23:22:13 +03:00
commit 7aa439d7a7
6 changed files with 92 additions and 0 deletions
+7
View File
@@ -0,0 +1,7 @@
MIHOMO_API=http://mihomo:9090
MIHOMO_SECRET=changeme
MIHOMO_CONFIG_DIR=/data/mihomo
DATABASE_URL=sqlite+aiosqlite:////data/db/app.db
ADMIN_USER=admin
ADMIN_PASSWORD=changeme
HOST_DOMAIN=
+2
View File
@@ -0,0 +1,2 @@
.env
data/db/
+13
View File
@@ -0,0 +1,13 @@
{$SITE_ADDRESS} {
@admin {
path /
path /configs/*
path /subscriptions/*
}
basicauth @admin {
{$ADMIN_USER} {$ADMIN_PASSWORD_HASH}
}
reverse_proxy app:8000
}
+13
View File
@@ -0,0 +1,13 @@
#!/bin/sh
set -e
HASH=$(caddy hash-password --plaintext "${ADMIN_PASSWORD:-changeme}")
export ADMIN_PASSWORD_HASH="$HASH"
if [ -n "${HOST_DOMAIN:-}" ]; then
export SITE_ADDRESS="$HOST_DOMAIN"
else
export SITE_ADDRESS=":80"
fi
exec caddy run --config /etc/caddy/Caddyfile --adapter caddyfile
+3
View File
@@ -0,0 +1,3 @@
external-controller: 0.0.0.0:9090
mixed-port: 7890
allow-lan: false
+54
View File
@@ -0,0 +1,54 @@
networks:
proxy_net:
driver: bridge
volumes:
caddy_data:
caddy_config:
services:
mihomo:
image: ghcr.io/metacubex/mihomo:latest
volumes:
- ./data/mihomo:/root/.config/mihomo
networks:
- proxy_net
restart: unless-stopped
healthcheck:
test: ["CMD", "wget", "-q", "-O-", "http://localhost:9090/version"]
interval: 5s
timeout: 3s
retries: 12
start_period: 5s
app:
build: ./app
env_file: .env
volumes:
- ./data/mihomo:/data/mihomo
- ./data/db:/data/db
networks:
- proxy_net
restart: unless-stopped
depends_on:
mihomo:
condition: service_healthy
caddy:
image: caddy:2-alpine
ports:
- "80:80"
- "443:443"
- "443:443/udp"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- ./caddy/entrypoint.sh:/entrypoint.sh:ro
- caddy_data:/data
- caddy_config:/config
entrypoint: ["/bin/sh", "/entrypoint.sh"]
env_file: .env
networks:
- proxy_net
restart: unless-stopped
depends_on:
- app