docker在 Docker 中的 TeXLive

Docker

Docker 提供了一种轻量且可移植的方式,将应用程序打包并在隔离的容器中运行。通过将应用程序和所有所需的依赖一起捆绑,容器确保在从笔记本到生产服务器的不同机器上具有一致的行为。

TeX Live 功能强大但体积庞大且对系统级差异敏感。将 TeX Live 打包到 Docker 镜像中可以使 LaTeX 工具链具有可预测性、可重现性,并且易于分发。

但是,某些 TeX Live 包依赖于 shell 访问。出于安全考虑,容器应在受限环境中运行,以防止用户执行任意的 shell 命令(例如通过 \write18 或 shell 转义)。这种隔离可以保护主机系统,避免对容器底层文件系统或诸如 bash.

TeXLive 完整版

TeXLive-Full@ayaka-notesarrow-up-right 是一个功能齐全的 TeXLive Docker 镜像 专为 Overleaf Server Pro、Overleaf Pro 以及独立的 LaTeX 编译环境(如 CI 或流水线)设计。

该镜像旨在提供一个几乎完整的 TeXLive 发行版,预装常用字体和工具,以尽量减少因缺少包或字体导致的编译失败。

功能:

  • 📦 几乎完整的 TeXLive 安装

  • 🧩 预装常用字体和实用工具

  • 🐳 即可与 Docker 和 Docker Compose 一起使用

  • 🧪 在 Overleaf Server Pro / Overleaf Pro / Overleaf CEP 等环境中经过测试

  • 🏷 多个版本标签(2020 – 最新)

Overleaf Pro 使用

TeXLive-Full@ayaka-notesarrow-up-right 支持 overleaf pro,您可以使用以下环境变量来 config/variables.env 文件(如果您是 工具包 用户arrow-up-right.

例如:

TeXLive 版本

得益于 GitHub Action,我们可以并行构建所有 tex 镜像,其中包括:

  • ghcr.io/ayaka-notes/texlive-full:2025.1 (也 latest 标签)

  • ghcr.io/ayaka-notes/texlive-full:2024.1

  • ghcr.io/ayaka-notes/texlive-full:2023.1

  • ghcr.io/ayaka-notes/texlive-full:2022.1

  • ghcr.io/ayaka-notes/texlive-full:2021.1

  • ghcr.io/ayaka-notes/texlive-full:2020.1

  • ghcr.io/ayaka-notes/texlive-full:base

我们使用来自 犹他大学arrow-up-right的镜像存档,该存档几乎包含从 1996 到 2024 的所有 texlive 镜像。并且多亏了 Overleaf 的 Dockerfile,我们可以更快地构建该项目。

为什么不支持 texlive 2019 及更早版本?

维护此类镜像非常困难。而且我们认为您可能不再使用它们,因为它们太旧。如果您需要,请打开 issue 告知我。

包含的组件

以下软件包包含在该 docker 镜像中。

  • fontconfig inkscape pandoc python3-pygments wget python3

  • gnupg gnuplot perl-modules perl ca-certificates git

  • ghostscript qpdf r-base-core tar

以下字体包含在该 docker 镜像中。

circle-exclamation

许可

MIT

问题

chevron-right问题 01:字体缓存缺失问题hashtag

当 Overleaf 编译 LaTeX 项目时,如果发生字体缺失, 您可能会发现编译过程耗时很长,这是因为当字体缺失时,texlive 会尝试 重建整个字体缓存。这是一个耗时的过程。

在我们的镜像中,我们已预先构建字体缓存,我们通过 此提交arrow-up-right

chevron-right问题 02:同步 Tex 极其缓慢hashtag

当您在 sharelatex 中使用此镜像时,您可能会发现同步 tex 非常缓慢。

参见: https://github.com/overleaf/overleaf/issues/1150arrow-up-right,只需禁用 http 2.0。

chevron-right问题 03:使用官方 Texlive 镜像重新编译错误hashtag

如果您在 docker hub 上使用 texlive 官方镜像 texlive/texlive,您可能会发现当您重新编译项目时,会报错。但是,在我们的镜像中,此问题已修复。因为我们使用最新的 ubuntu 基础镜像并且从 ubuntu 官方仓库安装了所有依赖。

其他技术提示

在构建 texlive 镜像(2019 之前)时,您可能需要注意以下问题:

  • 只有 http/ftp 在 texlive 2017 之前仅支持,因此您不能使用 https 来下载,除非您修改 peal 脚本。

  • 在 2015 年之前,仅提供 sha256 文件。因此您不能使用 sha512 来校验。

最后更新于