M3 后所有业务配置(api_key/resource_id/speaker/format/sample_rate/...)已搬入 数据库,env 只剩 4 个启动引导参数(setup 前 / DB 还不存在时必需): 1. TTS_ADMIN_KEY 安装 token(/api/setup 鉴权) 2. TTS_DB_PATH DB 路径(可选) 3. PORT 监听端口(可选) 4. OPENAI_TTS_API_KEY OpenAI 端鉴权(可选) 之前 .env.example 仍列出 11 个 BYTEDANCE_TTS_* env,误导用户把配置填 env 里 (实际被 DB 覆盖,改了不生效)。 改: - .env.example: 只列 4 个 bootstrap env,其他写"通过 WebUI 设置" - docker-compose.yml: env 块只透传 4 个,加 named volume 持久化 tts.db (无 volume = 容器重启丢所有配置) - Dockerfile: 准备 /data 目录,appuser 可写 - CHANGELOG.md: 新文件,记 v0.2.0 全部 M0-M3 + 这次修复 不动: - README.md(M4 第 5 步独立 commit,文件大) - 集成测试(M4 第 6 步) e2e 验证: - go build ./... 通过 - 旧 .env 文件如果存在仍然兼容(env var 作为 DB 缺失时的 fallback) 未 push (待 M4 全部完成)
43 lines
1.1 KiB
Docker
43 lines
1.1 KiB
Docker
FROM golang:1.26-alpine AS builder
|
|
|
|
WORKDIR /app
|
|
|
|
COPY go.mod go.sum ./
|
|
RUN go mod download
|
|
|
|
COPY . .
|
|
|
|
# VERSION 由 CI/CD 传入,通常为 `git describe --tags --always --dirty` 的输出
|
|
# COMMIT 为 `git rev-parse --short HEAD`
|
|
# 本地默认 dev
|
|
ARG VERSION=dev
|
|
ARG COMMIT=dev
|
|
RUN CGO_ENABLED=0 GOOS=linux go build \
|
|
-ldflags "-X github.com/volcano-tts/tts-api/version.Version=${VERSION} \
|
|
-X github.com/volcano-tts/tts-api/version.Commit=${COMMIT}" \
|
|
-o tts-api .
|
|
|
|
FROM alpine:3.21
|
|
|
|
RUN apk --no-cache add ca-certificates tzdata \
|
|
&& addgroup -S appgroup && adduser -S appuser -G appgroup
|
|
|
|
WORKDIR /app
|
|
|
|
COPY --from=builder /app/tts-api .
|
|
# health.html 已通过 //go:embed 嵌入 binary,无需单独复制
|
|
|
|
# 准备 /data 目录存 SQLite (tts.db + installed.lock)
|
|
# appuser 必须可写,否则启动后无法创建 DB
|
|
RUN mkdir -p /data \
|
|
&& chown -R appuser:appgroup /app /data
|
|
|
|
USER appuser
|
|
|
|
EXPOSE 8080
|
|
|
|
HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \
|
|
CMD wget -qO- http://localhost:8080/health || exit 1
|
|
|
|
ENTRYPOINT ["./tts-api"]
|