Quellcode durchsuchen

build(docker): 添加 cache mount 优化 apt/pip 依赖下载速度

- apt 安装使用 cache mount 缓存 /var/cache/apt 和 /var/lib/apt
- pip 安装使用 cache mount 缓存 /root/.cache/pip
- 删除 rm -rf /root/.cache,避免重复下载 torch/scipy 等大依赖
- 添加 # syntax=docker/dockerfile:1 启用 BuildKit 完整语法

第二次构建时依赖会直接复用本地缓存,大幅缩短构建时间。
WangXuMing vor 5 Tagen
Ursprung
Commit
50ca3d6a30
1 geänderte Dateien mit 11 neuen und 7 gelöschten Zeilen
  1. 11 7
      Dockerfile

+ 11 - 7
Dockerfile

@@ -1,3 +1,4 @@
+# syntax=docker/dockerfile:1
 FROM python:3.12-slim
 
 # 替换为阿里云 apt 源(Debian 12 使用 DEB822 格式)
@@ -5,7 +6,10 @@ RUN sed -i 's|deb.debian.org|mirrors.aliyun.com|g' /etc/apt/sources.list.d/debia
     sed -i 's|security.debian.org|mirrors.aliyun.com|g' /etc/apt/sources.list.d/debian.sources
 
 # 安装 OpenCV 系统依赖及 LibreOffice(docx/doc 转 PDF)
-RUN apt-get update && apt-get install -y \
+# 使用 cache mount 缓存 apt 包,避免每次重新下载
+RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
+    --mount=type=cache,target=/var/lib/apt,sharing=locked \
+    apt-get update && apt-get install -y \
     # OpenCV 核心依赖
     libgl1 \
     libglib2.0-0 \
@@ -35,8 +39,7 @@ RUN apt-get update && apt-get install -y \
     libreoffice-core \
     # 中文字体(PDF 转换中文支持)
     fonts-wqy-zenhei \
-    --no-install-recommends \
-    && rm -rf /var/lib/apt/lists/*
+    --no-install-recommends
 
 ENV DEBIAN_FRONTEND=noninteractive \
     TZ=Asia/Shanghai
@@ -49,10 +52,11 @@ ENV PATH="/venv/bin:$PATH"
 
 # 先复制 requirements 文件安装依赖(利用缓存)
 COPY requirements.txt /tmp/
-RUN /venv/bin/pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple \
-    && /venv/bin/pip config set install.trusted-host mirrors.aliyun.com \
-    && /venv/bin/pip --default-timeout=1800 install -r /tmp/requirements.txt \
-    && rm -rf /root/.cache
+# 使用 cache mount 缓存 pip 包,避免大依赖(torch/scipy 等)每次重新下载
+RUN --mount=type=cache,target=/root/.cache/pip,sharing=locked \
+    /venv/bin/pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple \
+    && /venv/bin/pip config set install.trusted-host pypi.tuna.tsinghua.edu.cn \
+    && /venv/bin/pip --default-timeout=1800 install -r /tmp/requirements.txt
 
 # 设置工作目录并复制项目文件
 WORKDIR /app