fix(docker): 修复容器启动卡死 — uv 锁过期触发运行时重装 + 运行时无镜像源

47 服务器部署实测暴露两个连环问题:
1. main 上的 uv.lock 停留在 0.2.2 (pyproject 已 0.2.3), 容器 CMD 是
   'uv run uvicorn', 启动时 uv 校验锁不一致 → 在容器内重新锁+重装依赖;
2. uv 国内源 (UV_DEFAULT_INDEX) 只在构建期 RUN 内 export, 未持久化为
   ENV —— 运行时重装走默认 pypi.org, 国内网络直连极慢, 容器表现为
   零日志不监听。

修复: 重新生成 uv.lock (仅项目版本 0.2.2→0.2.3, 依赖版本不变, 源 URL
改用阿里云镜像); Dockerfile 将 UV_DEFAULT_INDEX/UV_EXTRA_INDEX_URL
持久化为运行时 ENV, 与构建期同源。

验证: 本地 uv run --locked 通过 (锁与 pyproject 一致, 0.2.3)。
This commit is contained in:
shy3130
2026-09-07 00:34:34 +08:00
parent 6ee8e44ce4
commit 4a27dc45d5
2 changed files with 1848 additions and 1841 deletions
+7
View File
@@ -141,6 +141,13 @@ COPY --from=codex-builder /opt/codex-native /usr/local/bin/codex
RUN codex --version
ENV PYTHONPATH=/app
# 运行时 uv 镜像源持久化: CMD 用 `uv run` 启动, 锁与 pyproject 不一致等场景下
# uv 会在容器内重新解析/安装 —— 无源配置时默认 pypi.org, 国内网络会卡死启动
# (实测阿里云 ECS)。与构建期 RUN 内的 export 同源, 这里让它跨层存活。
ARG PYPI_INDEX=https://pypi.tuna.tsinghua.edu.cn/simple
ARG PYPI_FALLBACK=https://mirrors.aliyun.com/pypi/simple
ENV UV_DEFAULT_INDEX=${PYPI_INDEX} \
UV_EXTRA_INDEX_URL=${PYPI_FALLBACK}
# 兜底时区: 交易时段判断已在代码里显式用北京时间 (app/market_time.py),
# 此处让日志时间戳等其余 naive 时间也对齐北京时间。
ENV TZ=Asia/Shanghai
+1841 -1841
View File
File diff suppressed because it is too large Load Diff