Files
Volcano-Engine-TTS-UI/docker-compose.yml
T
sun 94b3557c7e docs: v0.2.4 阶段三 文档、示例配置与发布说明
文档与配置同步 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 全绿。
2026-10-04 01:17:43 +08:00

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