11# syntax=docker/dockerfile:1
22FROM python:slim
33
4- # 1. 配置 UV 环境变量
4+ # 1. 配置环境变量
55ENV UV_COMPILE_BYTECODE=1 \
66 UV_LINK_MODE=copy \
77 PYTHON_GIL=1 \
88 PYTHONUNBUFFERED=1 \
9- DEBIAN_FRONTEND=noninteractive
9+ DEBIAN_FRONTEND=noninteractive \
10+ BUN_INSTALL=/usr/local \
11+ PATH="/app/.venv/bin:/usr/local/bin:$PATH"
1012
11- # 2. 安装底层系统依赖
12- # 对应原 alpine 镜像依赖并迁移至 Debian 语法,添加 lmdb 和编译环境
13- RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
14- --mount=type=cache,target=/var/lib/apt,sharing=locked \
15- apt-get update && apt-get install -y --no-install-recommends \
16- make bash tini tar zstd \
17- git openssh-client ca-certificates curl wget \
18- nodejs npm \
19- # 编译与工具依赖 (对应 libffi-dev python-dev build-essential)
20- build-essential python3-dev libffi-dev \
21- # 图像与渲染依赖 (对应 alpine 的 zlib-dev cairo freetype-dev jpeg-dev pngquant)
22- zlib1g-dev libcairo2-dev libfreetype6-dev libjpeg-dev pngquant \
23- libcairo2-dev libfreetype6-dev libffi-dev libjpeg-dev libpng-dev libz-dev \
24- # LMDB 支持
25- liblmdb0 \
26- && npm install -g bun && \
27- git config --system --add safe.directory /__w/* && \
28- apt-get clean && rm -rf /var/lib/apt/lists/*
29-
30- # 3. 引入构建工具
13+ WORKDIR /app
14+
15+ # 2. 引入构建工具
3116COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
3217
33- WORKDIR /app
18+ # 3. 安装底层系统依赖、Bun 与构建环境
19+ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
20+ --mount=type=cache,target=/var/lib/apt,sharing=locked \
21+ set -ex; \
22+ apt-get update; \
23+ apt-get install -y --no-install-recommends \
24+ bash tini tar zstd git openssh-client ca-certificates curl wget \
25+ # 图像与渲染依赖 (运行时及其开发依赖) - 遵从用户指示保留
26+ pngquant zlib1g-dev libcairo2-dev libfreetype6-dev libffi-dev libjpeg-dev libpng-dev libz-dev \
27+ # LMDB 运行时
28+ liblmdb0; \
29+ curl -fsSL https://bun.com/install | bash; \
30+ # 配置 Git
31+ git config --system --add safe.directory '/__w/*'
3432
3533# 4. 安装 Node.js 依赖 (Bun)
3634RUN --mount=type=bind,source=package.json,target=package.json \
3735 --mount=type=bind,source=bun.lock,target=bun.lock \
3836 --mount=type=cache,target=/root/.bun/install/cache \
39- bun ci
37+ bun install --frozen-lockfile
4038
41- # 5. 安装 Python 依赖
42- RUN --mount=type=bind,source=.python-version,target=.python-version \
39+ # 5. 安装 Python 依赖并清理构建工具
40+ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
41+ --mount=type=cache,target=/var/lib/apt,sharing=locked \
42+ --mount=type=bind,source=.python-version,target=.python-version \
4343 --mount=type=bind,source=pyproject.toml,target=pyproject.toml \
4444 --mount=type=bind,source=uv.lock,target=uv.lock \
4545 --mount=type=cache,target=/root/.cache/uv \
46- uv sync --locked --no-cache
47- ENV PATH="/app/.venv/bin:$PATH"
46+ set -ex; \
47+ # 安装临时构建依赖 (用于编译 lmdb 等)
48+ buildDeps='build-essential python3-dev' ; \
49+ apt-get update; \
50+ apt-get install -y --no-install-recommends $buildDeps; \
51+ # 执行同步
52+ uv sync --locked --no-cache; \
53+ # 卸载构建依赖并清理
54+ apt-get purge -y --auto-remove $buildDeps; \
55+ apt-get clean; \
56+ rm -rf /var/lib/apt/lists/*
4857
4958# 6. 拷贝应用与脚本
5059COPY gulpfile.js .
@@ -54,3 +63,4 @@ COPY --chmod=755 bin/ /usr/local/bin/
5463
5564ENTRYPOINT ["/usr/bin/tini" , "--" ]
5665CMD ["/usr/local/bin/mkdocs-build" ]
66+
0 commit comments