mateo-demo / Dockerfile
BramVanroy's picture
Update Dockerfile
81acb54 verified
FROM python:3.11-slim-bookworm
COPY --from=ghcr.io/astral-sh/uv:0.6.16 /uv /uvx /bin/
LABEL org.opencontainers.image.authors="Bram Vanroy"
LABEL org.opencontainers.image.title="MAchine Translation Evaluation Online - Demo"
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
curl \
git \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
# --- Application User ---
RUN useradd -m -u 1000 mateo_user
USER mateo_user
ENV HOME="/home/mateo_user"
WORKDIR $HOME
# --- Application Code & Dependencies ---
ARG REPO_BRANCH=v1.6.1
RUN git clone --depth 1 --branch ${REPO_BRANCH} https://github.com/BramVanroy/mateo-demo.git $HOME/mateo-demo
WORKDIR $HOME/mateo-demo
ARG USE_CUDA=false
RUN uv venv .venv --python 3.11 \
&& . .venv/bin/activate \
&& uv pip install --no-cache-dir --upgrade pip wheel setuptools \
# Conditionally install PyTorch (CPU or CUDA 12.1)
&& if [ "$USE_CUDA" = "true" ]; then \
echo "Installing PyTorch with CUDA 12.1 support"; \
uv pip install --no-cache-dir torch==2.2.1 --index-url https://download.pytorch.org/whl/cu121; \
else \
echo "Installing PyTorch with CPU support"; \
uv pip install --no-cache-dir torch==2.2.1+cpu --index-url https://download.pytorch.org/whl/cpu; \
fi \
&& uv pip install --no-cache-dir --upgrade $HOME/mateo-demo[patch] \
&& uv cache clean
# --- Runtime Configuration ---
# Set runtime environment variables
# NOTE: for HF spaces we set XSRF to false
ENV PORT=7860 \
SERVER="localhost" \
BASE="" \
DEMO_MODE=false \
HF_HUB_ENABLE_HF_TRANSFER=1 \
PRELOAD_METRICS=true \
PATH="$HOME/.local/bin:$HOME/mateo-demo/.venv/bin:${PATH}" \
ENABLE_XSRF_PROTECTION=false
# --- Set default cache dir for the user ---
RUN mkdir -p "$HOME/.cache" \
&& chown -R mateo_user:mateo_user "$HOME/.cache"
# --- Entrypoint & CMD ---
# Expose the port the app runs on
EXPOSE $PORT
# Healthcheck (adjust start-period if runtime loading takes longer)
# Note: SERVER env var needs to be passed at runtime if not localhost
HEALTHCHECK --interval=30s --timeout=5s --start-period=60s \
CMD curl --fail http://${SERVER:-localhost}:${PORT}${BASE}/_stcore/health || exit 1
# Set the working directory for the application
WORKDIR $HOME/mateo-demo/src/mateo_st
RUN chmod +x $HOME/mateo-demo/docker/entrypoint.sh
ENTRYPOINT $HOME/mateo-demo/docker/entrypoint.sh
# CMD is now empty as the entrypoint handles the final command execution
CMD []