FROM scratchand copy the TeX Live tree inside. Then layer the Debian image on top of that.
--- a/Dockerfile.latest +++ b/Dockerfile.latest @@ -45,7 +45,7 @@ RUN echo "Building with documentation: $DOCFILES" && \ # actually install TeX Live cd install-tl* && \ # choose complete installation - echo "selected_scheme scheme-full" > install.profile && \ + echo "selected_scheme scheme-infraonly" > install.profile && \ # … but disable documentation and source files when asked to stay slim if [ "$DOCFILES" = "no" ]; then echo "tlpdbopt_install_docfiles 0" >> install.profile && \ echo "BUILD: Disabling documentation files"; fi && \ @@ -60,6 +60,12 @@ RUN echo "Building with documentation: $DOCFILES" && \ # add all relevant binaries to the PATH $(find /usr/local/texlive -name tlmgr) path add +RUN tlmgr install scheme-minimal +RUN tlmgr install scheme-basic +RUN tlmgr install scheme-small +RUN tlmgr install scheme-medium +RUN tlmgr install scheme-full + RUN \ # test the installation latex --version && printf '\n' && \
tetexcan be ignored I think.
scheme-gustis specific to GUST I guess and users of ConTeXt are anyway much better off using the ConTeXt
tetexdoesn't exist anymore (it was the predecessor of TeX Live) but if necessary this scheme would go between
docker buildmore aggressive about the layers it keeps when building. Please, let me know if it helps. 🙂
TL2021-historic(no doc, no src).
It's only on DockerHub, though. Pushing to GitLab failed.
FROM scratch, copy that directory into the image and only as a last step layer the operating system on top. The initial layer containing nothing but the historic TeX Live will be perfectly deterministic (by virtue of being frozen) so you get perfect layer reuse and OS updates on top can be done in a matter of seconds.