mirror of
https://ghfast.top/https://github.com/aeroxw/tick-stock-panel.git
synced 2026-09-12 17:54:15 +08:00
fix(docker): PyPI 源多级兜底,避免单源同步延迟导致构建失败
修复国内镜像(清华源)同步 uv 包延迟时,USE_CN_MIRROR=1 构建报 "Could not find a version that satisfies the requirement uv" 的问题, 用户此前需手动传 --build-arg PYPI_INDEX 换源才能通过。 - pip install uv 加三重 fallback:主源(清华) → 备用源(阿里云) → 官方源 - uv sync 同时挂双 index(UV_DEFAULT_INDEX + UV_EXTRA_INDEX_URL), uv 自动在两源查找,任一源缺包时另一源补位 - 新增 PYPI_FALLBACK build arg(默认阿里云),可自定义 正常构建零影响(fallback 首环即成功,--frozen 严格按 lock 安装), 仅在主源故障/同步延迟时自动兜底。
This commit is contained in:
+15
-3
@@ -3,6 +3,8 @@
|
||||
ARG USE_CN_MIRROR=1
|
||||
ARG NPM_REGISTRY=https://registry.npmmirror.com
|
||||
ARG PYPI_INDEX=https://pypi.tuna.tsinghua.edu.cn/simple
|
||||
# 备用 PyPI 源:主源同步延迟/故障时自动兜底(阿里云与清华互为补充)
|
||||
ARG PYPI_FALLBACK=https://mirrors.aliyun.com/pypi/simple
|
||||
ARG BACKEND_EXTRAS=
|
||||
|
||||
# === Stage 1: 前端构建 ===
|
||||
@@ -26,12 +28,18 @@ RUN pnpm build
|
||||
FROM python:3.11-slim AS runtime
|
||||
ARG USE_CN_MIRROR=1
|
||||
ARG PYPI_INDEX=https://pypi.tuna.tsinghua.edu.cn/simple
|
||||
ARG PYPI_FALLBACK=https://mirrors.aliyun.com/pypi/simple
|
||||
ARG BACKEND_EXTRAS=
|
||||
WORKDIR /app
|
||||
|
||||
# 安装 uv(快)
|
||||
# 安装 uv(快) —— 国内镜像下三重兜底:主源 → 备用源 → 官方源,
|
||||
# 任一成功即可,避免单一镜像同步延迟/故障导致构建失败。
|
||||
# uv 发版极频繁,国内镜像同步存在时间窗口,不锁版本且无 fallback 时
|
||||
# 容易遇到 "from versions: none"(索引解析不到最新版)。
|
||||
RUN if [ "$USE_CN_MIRROR" = "1" ]; then \
|
||||
pip install --no-cache-dir uv -i "$PYPI_INDEX"; \
|
||||
pip install --no-cache-dir uv -i "$PYPI_INDEX" || \
|
||||
pip install --no-cache-dir uv -i "$PYPI_FALLBACK" || \
|
||||
pip install --no-cache-dir uv; \
|
||||
else \
|
||||
pip install --no-cache-dir uv; \
|
||||
fi
|
||||
@@ -39,7 +47,11 @@ RUN if [ "$USE_CN_MIRROR" = "1" ]; then \
|
||||
# Backend deps
|
||||
COPY README.md /README.md
|
||||
COPY backend/pyproject.toml backend/uv.lock* ./
|
||||
RUN if [ "$USE_CN_MIRROR" = "1" ]; then export UV_DEFAULT_INDEX="$PYPI_INDEX"; fi; \
|
||||
# uv 原生支持同时挂多个 index(主源 + 备用源),会自动在两源中查找,
|
||||
# 比逐个重试更稳健 —— 任一源缺包时另一源补位。
|
||||
RUN if [ "$USE_CN_MIRROR" = "1" ]; then \
|
||||
export UV_DEFAULT_INDEX="$PYPI_INDEX" UV_EXTRA_INDEX_URL="$PYPI_FALLBACK"; \
|
||||
fi; \
|
||||
set -- --no-dev; \
|
||||
for extra in $BACKEND_EXTRAS; do \
|
||||
set -- "$@" --extra "$extra"; \
|
||||
|
||||
Reference in New Issue
Block a user