Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 11 additions & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -62,11 +62,14 @@
&& rm -rf /var/lib/apt/lists/* \
&& python3.12 -m ensurepip --upgrade \
&& groupadd -r ttsuser \
&& useradd -r -g ttsuser -d /app -s /sbin/nologin ttsuser
&& useradd -r -g ttsuser -m -d /home/ttsuser -s /sbin/nologin ttsuser

WORKDIR /app

# Copy installed Python packages from the builder stage.
# 建用户时必须给真实 home(-m -d /home/ttsuser):ttsuser 的 home 若是 /app,
# Python 的 user-site 就成了 /app/.local/...,而这里把 pip --user 的产物放到
# /home/ttsuser/.local —— 包装上了却永远不在 sys.path 上(容器起不来的根因之一)。
COPY --from=builder /root/.local /home/ttsuser/.local

# Copy the built wheel and install it so package metadata is available.
Expand All @@ -83,6 +86,13 @@

USER ttsuser
ENV PATH=/home/ttsuser/.local/bin:$PATH
# 让 `import integrated_app` 命中 /app/app 的源码而非只读 site-packages:
# app_server._PROJECT_ROOT = dirname(dirname(__file__ 所在包)) 只有从 /app/app 导入时
# 才等于 /app,而 /app/data、/app/outputs、/app/logs 是 compose 与冒烟用例挂的可写卷。
# 走 site-packages 会把工程根算进只读镜像层 —— CSRF 密钥等运行态文件写不进去
# (旧代码对此只 warning 后静默关防护,现改为拒绝启动,故必须先修导入路径)。
# wheel 仍保留安装:提供包元数据(版本号)与 ~/.local/bin 入口。
ENV PYTHONPATH=/app/app

EXPOSE 7869

Expand All @@ -93,7 +103,7 @@

# 容器内默认开启 API Auth:0.0.0.0 监听必须配合认证(run_server 安全网要求)。
# Token 优先取 TTS_API_AUTH_TOKEN;未提供时由应用启动时生成一次性随机 token 并打印到日志。
ENV TTS_API_AUTH_ENABLED=1

Check warning on line 106 in Dockerfile

View workflow job for this annotation

GitHub Actions / Boot hardened container & probe

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ENV "TTS_API_AUTH_ENABLED") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 106 in Dockerfile

View workflow job for this annotation

GitHub Actions / Build & Scan Image

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ENV "TTS_API_AUTH_ENABLED") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

# 自动加载模型(app_server.lifespan 实际消费这两个变量,非死配置)
ENV TTS_AUTO_LOAD_MODEL=1
Expand Down
Loading