build texlive server

This commit is contained in:
2026-05-27 23:16:57 +02:00
parent 761ae95175
commit dd4e30e368
+27 -9
View File
@@ -11,22 +11,40 @@ RUN opam exec -- dune build bin/main.exe
FROM debian:12-slim FROM debian:12-slim
WORKDIR /app WORKDIR /app
# Install native system dependencies and a minimal TeX Live profile # Configure apt to retry downloads up to 3 times if a packet gets corrupted
RUN echo 'Acquire::Retries "5";' > /etc/apt/apt.conf.d/80-retries
# 1. Install native system dependencies and a minimal TeX Live profile
RUN apt-get update && apt-get install -y --no-install-recommends \ RUN apt-get update && apt-get install -y --no-install-recommends \
libssl3 \ libssl3 \
libev4 \ libev4 \
ca-certificates \ ca-certificates \
# texlive-latex-base \ wget \
# texlive-latex-recommended \ tar \
# texlive-fonts-recommended \ perl \
# # tlmgr is the TeX Live package manager; we use it to grab chess assets
# texlive-games \
&& rm -rf /var/lib/apt/lists/* && rm -rf /var/lib/apt/lists/*
# Copy the compiled native OCaml binary from Stage 1 # 2. Download and run the TeX Live CTAN installer script
COPY --from=builder /app/_build/default/bin/main.exe ./server RUN wget --tries=5 https://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz && \
tar -xzf install-tl-unx.tar.gz && \
rm install-tl-unx.tar.gz && \
cd install-tl-* && \
echo "selected_scheme scheme-basic" > profile && \
./install-tl -profile profile && \
cd .. && \
rm -rf install-tl-*
# Copy the static assets folder # 3. FIX: Ensure the dynamic path to tlmgr matches whatever year CTAN is currently on
ENV PATH="/usr/local/texlive/2026/bin/x86_64-linux:${PATH}"
ENV PATH="/usr/local/texlive/2025/bin/x86_64-linux:${PATH}"
ENV PATH="/usr/local/texlive/2024/bin/x86_64-linux:${PATH}"
# Fallback to absolute standard binary bin location
ENV PATH="/usr/local/texlive/bin/x86_64-linux:${PATH}"
# 3. Install TexLive packages needed for rendering a chess game
RUN tlmgr install parskip pgf chessboard etoolbox ifmtarg xifthen skaknew lambda-lists xkeyval chessfss skak xskak
COPY --from=builder /app/_build/default/bin/main.exe ./server
COPY ./static ./static COPY ./static ./static
EXPOSE 8080 EXPOSE 8080