dockerTeXLive In Docker

Docker

Docker provides a lightweight and portable way to package and run applications in isolated containers. By bundling the application together with all required dependencies, a container ensures consistent behavior across different machines, from laptops to production servers.

TeX Live is powerful but large and sensitive to system-level differences. Packaging TeX Live inside a Docker image makes the LaTeX toolchain predictable, reproducible, and easy to distribute.

However, some TeX Live packages rely on shell access. For security reasons, the container should run in a restricted environment that prevents users from executing arbitrary shell commands (for example via \write18 or shell escape). This isolation protects the host system and avoids unintended access to the container’s underlying filesystem or tools such as bash.

TeXLive Full Edition

TeXLive-Full@ayaka-notesarrow-up-right is a fully-featured TeXLive Docker image designed specially for Overleaf Server Pro, Overleaf Pro, and also standalone LaTeX compilation environments, like CI or pipelines.

This image aims to provide an almost complete TeXLive distribution with common fonts and tools preinstalled, in order to minimize compilation failures caused by missing packages or fonts.

Features:

  • 📦 Nearly full TeXLive installation

  • 🧩 Preinstalled common fonts and utilities

  • 🐳 Ready to use with Docker and Docker Compose

  • 🧪 Tested with Overleaf Server Pro / Overleaf Pro/ Overleaf CEP...

  • 🏷 Multiple version tags (2020 – Latest)

Overleaf Pro Usage

TeXLive-Full@ayaka-notesarrow-up-right support overleaf pro, you can use the following environment variables to config/variables.env file if you are toolkit userarrow-up-right.

For example:

TeXLive Version

Thanks to Github Action, we can build all tex image parallel, which includes:

  • ghcr.io/ayaka-notes/texlive-full:2025.1 (Also latest tag)

  • 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

We use mirror archive from utah universityarrow-up-right, which includes almost all texlive image ranging from 1996 to 2024. And thankes to Overleaf's Dockerfile, we can build this project faster.

Why texlive 2019 and earlier are not supported ?

To maintain such images is more than difficult. And we believe you may not use it any more since it's too old. If you need, open a issue to let me know.

Contained Component

The following packages are contained in the docker image.

  • fontconfig inkscape pandoc python3-pygments wget python3

  • gnupg gnuplot perl-modules perl ca-certificates git

  • ghostscript qpdf r-base-core tar

The following fonts are contained in the docker image.

circle-exclamation

License

MIT

Problems

chevron-rightProblem 01: Font Cache Miss Problemhashtag

When overleaf compile latex project, if font miss occurs, you may find the compile progress takes a long time, that is because when a font is miss, texlive will try to rebuild the whole font cache. This is a time-consuming process.

In our image, we have pre-built the font cache, we fix this problem by this commitarrow-up-right

chevron-rightProblem 02: Sync Tex Extremely Slowhashtag

When you use this image in sharelatex, you may find that the sync tex is extremely slow.

See: https://github.com/overleaf/overleaf/issues/1150arrow-up-right, just disable http 2.0.

chevron-rightProblem 03: Re-Compile Error with Official Texlive Imagehashtag

If you use texlive official image on docker hub texlive/texlive, you may find that when you re-compile a project, it will report error. However, in our image, this problem is fixed. Becase we use latest ubuntu base image and install all dependencies from ubuntu official repo.

Other Tech Reminder

While build texlive image(before 2019), you may need to pay attention to the following problems:

  • Only http/ftp is supported before texlive 2017, so you can't use https to download, unless you modify the peal script.

  • Before 2015, only sha256 file is provided. So you can't use sha512 to check.

Last updated