文档与配置同步 v0.3.0 的破坏性变更: README.md: - 特性列表更新:管理入口 /dashboard、凭证分离、默认无匿名监控端点 - 环境变量表补充 METRICS_ALLOW_CIDR,并说明未配任何管理凭证时服务拒绝启动 - 端点文档重写:/healthz(匿名且不含字段)、/health(需鉴权)、 /metrics(默认 404,两种使用方式)、管理页面与安装页对照表 (含"页面需鉴权为何又能直接打开"的内容协商说明) - 公网部署安全清单重写:按端点列出真实暴露面,并提醒探针必须指向 /healthz - 故障排查、架构表、迁移表中的 /admin 引用统一改为 /dashboard .env.example:新增 METRICS_ALLOW_CIDR 与 admin_key 说明(含 Docker 网段警告)。 两处部署陷阱修复(阶段一给 /health 加鉴权引发的连带问题): - docker-compose.yml 的 healthcheck 原指向 /health,加鉴权后会一律 401, 导致容器被判定为 unhealthy → 改为 /healthz - Dockerfile 的 HEALTHCHECK 同样指向 /health → 改为 /healthz (这两处若不改,升级后容器健康状态会持续异常,且现象与鉴权改动看起来无关,排查成本高) 新增 docs/RELEASE_NOTES_v0.3.0.md:可直接用于创建 Release, 含 Breaking Change 清单、新特性、验证方式与实测结果、升级步骤。 docs/IMPLEMENT_v0.3.0.md: - 按合并后的阶段编号重写实施进度表与阶段标题 (原「阶段 1 收紧鉴权」与「阶段 2 收口端点」合并为「阶段 1」,后续顺延), 并说明合并原因:两者只做前者是"有风险无收益" - 记录本轮实际验证结果 验证:go build / go vet / go test ./... -count=1 全绿。
41 lines
1.6 KiB
YAML
41 lines
1.6 KiB
YAML
services:
|
|
tts-api:
|
|
build: .
|
|
image: volcano-tts-aggregator:latest
|
|
container_name: tts-api
|
|
ports:
|
|
- "${PORT:-8080}:8080"
|
|
environment:
|
|
# 4 个启动引导 env(仅这 4 个必看)
|
|
# 业务配置(api_key/resource_id/speaker/格式...)通过 WebUI 设置,
|
|
# 存到 /data/tts.db 持久化
|
|
- TTS_ADMIN_KEY=${TTS_ADMIN_KEY:-}
|
|
- TTS_DB_PATH=/data/tts.db
|
|
- PORT=8080
|
|
- OPENAI_TTS_API_KEY=${OPENAI_TTS_API_KEY:-}
|
|
# 可选,装好后也可在 /dashboard 改
|
|
- TRUSTED_PROXY_HOPS=${TRUSTED_PROXY_HOPS:-}
|
|
# v0.3.0 新增(可选):根路径 /metrics 的内网 CIDR 白名单,逗号分隔。
|
|
# 不配置时根路径 /metrics 完全不注册(Prometheus 请改用鉴权版 /api/admin/metrics)。
|
|
# ⚠️ 这里必须填「容器内网网段」,不要填 127.0.0.1/32 ——
|
|
# 那是容器自身回环,Prometheus 在宿主机/其他容器里根本进不来。
|
|
# 例:METRICS_ALLOW_CIDR=172.16.0.0/12
|
|
- METRICS_ALLOW_CIDR=${METRICS_ALLOW_CIDR:-}
|
|
volumes:
|
|
# DB + lock 文件必须挂载,否则容器重启后配置全丢
|
|
- tts-data:/data
|
|
restart: unless-stopped
|
|
healthcheck:
|
|
# v0.3.0:必须用 /healthz(匿名存活探针)。
|
|
# /health 现在需要管理凭证,而健康检查不带 Authorization ——
|
|
# 继续用 /health 会让容器一直被判定为 unhealthy。
|
|
test: ["CMD", "wget", "-qO-", "http://localhost:8080/healthz"]
|
|
interval: 30s
|
|
timeout: 5s
|
|
retries: 3
|
|
start_period: 10s
|
|
|
|
volumes:
|
|
tts-data:
|
|
name: tts-api-data
|