# 使用国内镜像源拉取基础镜像 # 备选镜像源前缀:docker.1ms.run / dockerpull.com / docker.xuanyuan.me FROM docker.m.daocloud.io/python:3.13-slim # 环境变量:非交互 + 路径配置 ENV DEBIAN_FRONTEND=noninteractive \ LANG=C.UTF-8 \ LC_ALL=C.UTF-8 \ UV_LINK_MODE=copy \ UV_CACHE_DIR=/uv-cache \ UV_PYTHON_INSTALL_DIR=/uv-python \ UV_PROJECT_ENVIRONMENT=/opt/venv \ PATH="/opt/venv/bin:${PATH}" # 配置 apt 国内镜像(阿里云)并安装系统依赖 RUN sed -i 's|deb.debian.org|mirrors.aliyun.com|g' /etc/apt/sources.list.d/debian.sources \ && apt-get update \ && apt-get install -y --no-install-recommends \ ca-certificates \ curl \ git \ jq \ build-essential \ && rm -rf /var/lib/apt/lists/* # 配置 pip 国内镜像(阿里云) RUN mkdir -p /etc/pip \ && printf '[global]\nindex-url = https://mirrors.aliyun.com/pypi/simple/\ntrusted-host = mirrors.aliyun.com\n' \ > /etc/pip/pip.conf \ && mkdir -p /root/.config/pip \ && ln -sf /etc/pip/pip.conf /root/.config/pip/pip.conf # 安装 uv 并预装 Python 3.8 / 3.13 RUN pip install --no-cache-dir uv -i https://mirrors.aliyun.com/pypi/simple/ \ && uv python install 3.8 3.13 # 预装项目 dev 依赖(仅复制依赖描述文件,利用 Docker 层缓存) WORKDIR /workspace COPY pyproject.toml tox.ini README.md ./ COPY src/ ./src/ # 同步依赖到 /opt/venv(CI 时直接复用) RUN uv sync --frozen --no-install-project 2>/dev/null || uv sync --no-install-project # 预装 tox 环境(py38 + py313) RUN uvx tox run -e py38,py313 --notest 2>/dev/null || true # 持久化 uv 缓存目录(CI 可挂载到宿主机加速) VOLUME ["/uv-cache"] # 默认入口 CMD ["/bin/bash"]