72 lines
1.8 KiB
Docker
72 lines
1.8 KiB
Docker
# ---------- LaTeX Builder Stage ----------
|
|
FROM texlive/texlive:latest AS latex-builder
|
|
|
|
# Install additional dependencies for LaTeX
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
git \
|
|
inkscape \
|
|
make \
|
|
fonts-liberation \
|
|
fonts-dejavu-core \
|
|
&& rm -rf /var/lib/apt/lists/* \
|
|
&& inkscape --version
|
|
|
|
WORKDIR /latex
|
|
|
|
# Copy the LaTeX source files from local worktrees
|
|
COPY latex-qsm /latex/qsm
|
|
COPY latex-vsm /latex/vsm
|
|
|
|
# Build QSM PDF
|
|
WORKDIR /latex/qsm
|
|
RUN latexmk -xelatex -interaction=nonstopmode -halt-on-error -shell-escape Main.tex && \
|
|
cp Main.pdf /latex/qsm.pdf && \
|
|
latexmk -c
|
|
|
|
# Build VSM PDF
|
|
WORKDIR /latex/vsm
|
|
RUN latexmk -xelatex -interaction=nonstopmode -shell-escape Main.tex && \
|
|
cp Main.pdf /latex/vsm.pdf && \
|
|
latexmk -c
|
|
|
|
# ---------- Base Python Stage ----------
|
|
FROM python:3.11-slim AS base
|
|
|
|
ENV PYTHONDONTWRITEBYTECODE=1 \
|
|
PYTHONUNBUFFERED=1
|
|
|
|
# System deps
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
tzdata ca-certificates \
|
|
qpdf \
|
|
pdftk-java \
|
|
libmupdf-dev \
|
|
mupdf-tools \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
WORKDIR /app
|
|
|
|
# ---------- Dependencies ----------
|
|
COPY requirements.txt /app/requirements.txt
|
|
RUN pip install --no-cache-dir -r /app/requirements.txt
|
|
|
|
# ---------- App ----------
|
|
# Copy application code
|
|
COPY src/ /app/src/
|
|
|
|
# Copy pre-built PDFs from latex-builder stage
|
|
COPY --from=latex-builder /latex/qsm.pdf /app/assets/qsm.pdf
|
|
COPY --from=latex-builder /latex/vsm.pdf /app/assets/vsm.pdf
|
|
|
|
# Set Python path
|
|
ENV PYTHONPATH=/app/src
|
|
|
|
# Configure PDF template paths
|
|
ENV QSM_TEMPLATE=/app/assets/qsm.pdf \
|
|
VSM_TEMPLATE=/app/assets/vsm.pdf
|
|
|
|
EXPOSE 8000
|
|
|
|
# ---------- Run ----------
|
|
CMD ["uvicorn", "service_api:app", "--host", "0.0.0.0", "--port", "8000"]
|