跳转至

Docker 镜像

DocsForge 可以在 Docker 容器中运行,以实现隔离且可复现的文档构建。

快速开始

# 拉取最新镜像
docker pull ghcr.io/qqshi13/docsforge:latest

# 构建文档
docker run --rm -v $(pwd):/docs ghcr.io/qqshi13/docsforge:latest build

# 启动开发服务器(访问 http://localhost:8000)
docker run --rm -v $(pwd):/docs -p 8000:8000 ghcr.io/qqshi13/docsforge:latest serve --lan

# 导出 PDF
docker run --rm -v $(pwd):/docs ghcr.io/qqshi13/docsforge:latest build --pdf

# 校验配置
docker run --rm -v $(pwd):/docs ghcr.io/qqshi13/docsforge:latest check

# 自动修复常见配置问题
docker run --rm -v $(pwd):/docs ghcr.io/qqshi13/docsforge:latest check --fix

可用标签

标签说明
latest最新稳定版本
11.0.4特定版本
sha-abc123特定提交 SHA
11.0最新 11.0.x 版本

每次 GitHub 发布时,镜像都会自动发布到 ghcr.io/qqshi13/docsforge

包含内容

Docker 镜像(约 1.5GB)包含:

  • 包含全部 extras 的 DocsForgedocsforge[all]
  • 用于 PDF 导出的 Playwright + Chromium
  • 用于 TikZ 图表编译的 TeXLive + dvisvgm
  • Python 3.12 运行时

本地构建

FROM python:3.12-slim

RUN pip install docsforge

WORKDIR /docs
EXPOSE 8000

ENTRYPOINT ["docsforge"]
CMD ["--help"]
docker build -t my-docsforge .
docker run --rm -v $(pwd):/docs my-docsforge build

Docker Compose

# docker-compose.yml
version: '3'
services:
  docs:
    image: ghcr.io/qqshi13/docsforge:latest
    command: serve --lan
    ports:
      - "8000:8000"
    volumes:
      - .:/docs
docker-compose up

CI/CD 集成

在 CI 流水线中使用 Docker 镜像,实现可复现构建:

# .github/workflows/docs.yml
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: 构建文档
        run: |
          docker run --rm -v $(pwd):/docs ghcr.io/qqshi13/docsforge:latest build
      - name: Deploy
        run: |
          # 将 site/ 上传到你的托管服务商

环境变量

变量说明
PLAYWRIGHT_CHROMIUM_EXECUTABLE用于 PDF 导出的 Chromium/Chrome 可执行文件路径。如果未设置,DocsForge 会探测常见的 Linux 路径(/usr/bin/chromium/usr/bin/google-chrome、…),最终回退到 Playwright 自带的浏览器。

自定义 PDF 浏览器

PDF 导出(docsforge build --pdf)通过 Playwright 启动无头 Chromium。
镜像在 /usr/bin/chromium 提供了 Chromium,并将 PLAYWRIGHT_CHROMIUM_EXECUTABLE
指向它。要使用其他浏览器:

覆盖路径(文件必须存在于容器内部):

docker run --rm -v "$PWD:/docs" \
  -e PLAYWRIGHT_CHROMIUM_EXECUTABLE=/usr/bin/google-chrome-stable \
  ghcr.io/qqshi13/docsforge:latest build --pdf

使用 Playwright 自带的浏览器(取消环境变量覆盖,使其
通过默认探测列表回退到 Playwright 管理的下载——已通过 playwright install chromium 预装在镜像中):

docker run --rm -v "$PWD:/docs" \
  -e PLAYWRIGHT_CHROMIUM_EXECUTABLE= \
  ghcr.io/qqshi13/docsforge:latest build --pdf

以只读方式挂载宿主机浏览器可执行文件并指向它:

docker run --rm -v "$PWD:/docs" \
  -v /usr/bin/google-chrome:/usr/bin/host-chrome:ro \
  -e PLAYWRIGHT_CHROMIUM_EXECUTABLE=/usr/bin/host-chrome \
  ghcr.io/qqshi13/docsforge:latest build --pdf

使用 --jobs 调整并行度:

docker run --rm -v "$PWD:/docs" ghcr.io/qqshi13/docsforge:latest build --pdf --jobs 2