在 Docker 中的 TeXLive
Docker
Docker 提供了一种轻量且可移植的方式,将应用程序打包并在隔离的容器中运行。通过将应用程序和所有所需的依赖一起捆绑,容器确保在从笔记本到生产服务器的不同机器上具有一致的行为。
TeX Live 功能强大但体积庞大且对系统级差异敏感。将 TeX Live 打包到 Docker 镜像中可以使 LaTeX 工具链具有可预测性、可重现性,并且易于分发。
但是,某些 TeX Live 包依赖于 shell 访问。出于安全考虑,容器应在受限环境中运行,以防止用户执行任意的 shell 命令(例如通过 \write18 或 shell 转义)。这种隔离可以保护主机系统,避免对容器底层文件系统或诸如 bash.
TeXLive 完整版
TeXLive-Full@ayaka-notes 是一个功能齐全的 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-notes 支持 overleaf pro,您可以使用以下环境变量来 config/variables.env 文件(如果您是 工具包 用户.
例如:
TeXLive 版本
得益于 GitHub Action,我们可以并行构建所有 tex 镜像,其中包括:
ghcr.io/ayaka-notes/texlive-full:2025.1(也latest标签)ghcr.io/ayaka-notes/texlive-full:2024.1ghcr.io/ayaka-notes/texlive-full:2023.1ghcr.io/ayaka-notes/texlive-full:2022.1ghcr.io/ayaka-notes/texlive-full:2021.1ghcr.io/ayaka-notes/texlive-full:2020.1ghcr.io/ayaka-notes/texlive-full:base
我们使用来自 犹他大学的镜像存档,该存档几乎包含从 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 镜像中。
请确认相关字体是否可以用于商业用途。我们 不对 您因不正确使用字体而引发的任何法律问题负责。一旦您下载镜像,即表示您自动同意此条款。
许可
MIT
问题
问题 01:字体缓存缺失问题
当 Overleaf 编译 LaTeX 项目时,如果发生字体缺失, 您可能会发现编译过程耗时很长,这是因为当字体缺失时,texlive 会尝试 重建整个字体缓存。这是一个耗时的过程。
在我们的镜像中,我们已预先构建字体缓存,我们通过 此提交
问题 02:同步 Tex 极其缓慢
当您在 sharelatex 中使用此镜像时,您可能会发现同步 tex 非常缓慢。
参见: https://github.com/overleaf/overleaf/issues/1150,只需禁用 http 2.0。
问题 03:使用官方 Texlive 镜像重新编译错误
如果您在 docker hub 上使用 texlive 官方镜像 texlive/texlive,您可能会发现当您重新编译项目时,会报错。但是,在我们的镜像中,此问题已修复。因为我们使用最新的 ubuntu 基础镜像并且从 ubuntu 官方仓库安装了所有依赖。
其他技术提示
在构建 texlive 镜像(2019 之前)时,您可能需要注意以下问题:
只有
http/ftp在 texlive 2017 之前仅支持,因此您不能使用https来下载,除非您修改peal脚本。在 2015 年之前,仅提供 sha256 文件。因此您不能使用 sha512 来校验。
最后更新于