Files
encoach_backend/Dockerfile

91 lines
1.9 KiB
Docker

# Use the official lightweight Python image.
# https://hub.docker.com/_/python
FROM python:3.11-slim
# Allow statements and log messages to immediately appear in the logs
ENV PYTHONUNBUFFERED True
# Copy local code to the container image.
ENV APP_HOME /app
WORKDIR $APP_HOME
COPY . ./
# TODO: Test if these latex packages are enough for pandoc
RUN apt update && apt install -y \
ffmpeg \
poppler-utils \
texlive-latex-base \
texlive-fonts-recommended \
texlive-latex-extra \
texlive-xetex \
pandoc \
librsvg2-bin \
&& rm -rf /var/lib/apt/lists/*
# Install additional LaTeX packages
RUN tlmgr init-usertree && \
tlmgr install \
adjustbox \
booktabs \
caption \
collectbox \
enumitem \
environ \
eurosym \
fancyhdr \
float \
ifoddpage \
lastpage \
listings \
makecell \
marginnote \
microtype \
multirow \
needspace \
parskip \
pdfpages \
sourcesanspro \
tcolorbox \
threeparttable \
tikz \
titlesec \
tocbibind \
tocloft \
trimspaces \
ulem \
varwidth \
wrapfig \
babel \
hyphenat \
ifplatform \
letltxmacro \
lineno \
marvosym \
pgf \
realscripts \
soul \
tabu \
times \
titling \
ucharcat \
unicode-math \
upquote \
was \
xcolor \
xecjk \
xltxtra \
zref
# Install production dependencies.
RUN pip install --no-cache-dir -r requirements.txt
EXPOSE 5000
# Run the web service on container startup. Here we use the gunicorn
# webserver, with one worker process and 8 threads.
# For environments with multiple CPU cores, increase the number of workers
# to be equal to the cores available.
# Timeout is set to 0 to disable the timeouts of the workers to allow Cloud Run to handle instance scaling.
CMD exec gunicorn --bind 0.0.0.0:5000 --workers 1 --threads 8 --timeout 0 app:app