Skip to content

Commit ce5b1c0

Browse files
committed
Update Dockerfile
1 parent e2dabeb commit ce5b1c0

2 files changed

Lines changed: 71 additions & 53 deletions

File tree

images/exporter/Dockerfile

Lines changed: 33 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,54 @@
11
# syntax=docker/dockerfile:1
22
FROM python:slim
33

4-
# 1. 配置 UV 环境变量
4+
# 1. 配置环境变量
55
ENV 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-
# 使用 apt-get 替代 apk,并补全 weasyprint 和 fonts 的 Debian 包名
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 ca-certificates curl wget \
18-
nodejs npm \
19-
# 字体支持
20-
fonts-noto-cjk fonts-noto-core fonts-wqy-zenhei fonts-liberation fonts-linuxlibertine \
21-
# LMDB 支持 (runtime)
22-
liblmdb0 libffi-dev python-dev-is-python3 build-essential \
23-
&& fc-cache -fv && \
24-
git config --system --add safe.directory /__w/* && \
25-
apt-get clean && rm -rf /var/lib/apt/lists/*
13+
WORKDIR /app
2614

27-
# 3. 引入构建工具
15+
# 2. 引入构建工具
2816
COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
2917

30-
WORKDIR /app
31-
32-
# 5. 安装 Python 依赖
33-
RUN --mount=type=bind,source=.python-version,target=.python-version \
18+
# 3. 安装依赖、构建并清理
19+
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
20+
--mount=type=cache,target=/var/lib/apt,sharing=locked \
21+
--mount=type=bind,source=.python-version,target=.python-version \
3422
--mount=type=bind,source=pyproject.toml,target=pyproject.toml \
3523
--mount=type=bind,source=uv.lock,target=uv.lock \
3624
--mount=type=cache,target=/root/.cache/uv \
37-
uv sync --locked --no-cache
38-
ENV PATH="/app/.venv/bin:$PATH"
25+
set -ex; \
26+
# 安装基础工具与 Bun
27+
apt-get update; \
28+
apt-get install -y --no-install-recommends \
29+
bash tini tar zstd git ca-certificates curl wget \
30+
fonts-noto-cjk fonts-noto-core fonts-wqy-zenhei fonts-liberation fonts-linuxlibertine; \
31+
curl -fsSL https://bun.com/install | bash; \
32+
# 安装运行时库 (LMDB, Image rendering)
33+
apt-get install -y --no-install-recommends liblmdb0; \
34+
# 安装临时构建依赖
35+
buildDeps='build-essential python3-dev libffi-dev'; \
36+
apt-get install -y --no-install-recommends $buildDeps; \
37+
# 执行 Python 依赖安装
38+
uv sync --locked --no-cache; \
39+
# 清理构建依赖与缓存
40+
apt-get purge -y --auto-remove $buildDeps; \
41+
apt-get clean; \
42+
rm -rf /var/lib/apt/lists/*; \
43+
# 配置
44+
fc-cache -fv; \
45+
git config --system --add safe.directory '/__w/*'
3946

40-
# 6. 拷贝应用与脚本
47+
# 4. 拷贝应用与脚本
4148
COPY scripts/ /app/scripts/
4249
COPY templates/ /app/templates/
4350
COPY --chmod=755 bin/ /usr/local/bin/
4451

4552
ENTRYPOINT ["/usr/bin/tini", "--"]
4653
CMD ["/usr/local/bin/mkdocs-export"]
54+

images/mkdocs/Dockerfile

Lines changed: 38 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,59 @@
11
# syntax=docker/dockerfile:1
22
FROM python:slim
33

4-
# 1. 配置 UV 环境变量
4+
# 1. 配置环境变量
55
ENV 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. 引入构建工具
3116
COPY --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)
3634
RUN --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. 拷贝应用与脚本
5059
COPY gulpfile.js .
@@ -54,3 +63,4 @@ COPY --chmod=755 bin/ /usr/local/bin/
5463

5564
ENTRYPOINT ["/usr/bin/tini", "--"]
5665
CMD ["/usr/local/bin/mkdocs-build"]
66+

0 commit comments

Comments
 (0)