2e2ca812a1
CI / Lint, Typecheck & Test (push) Failing after 1h6m49s
为了满足actions/checkout的运行依赖,在Docker镜像中新增安装Node.js 20版本,并验证安装正常
58 lines
1.9 KiB
Docker
58 lines
1.9 KiB
Docker
# 使用国内镜像源拉取基础镜像
|
||
# 备选镜像源前缀: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
|
||
|
||
# 安装 Node.js 20.x(actions/checkout 需要)
|
||
RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && \
|
||
apt-get install -y nodejs && \
|
||
node --version
|
||
|
||
# 预装项目 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"]
|