# 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