BrianIsaac's picture
build: suppress container logs in Dockerfile
ac37390
FROM ghcr.io/astral-sh/uv:python3.12-bookworm-slim AS build
ARG DEBIAN_FRONTEND="noninteractive"
WORKDIR /app
ENV UV_LINK_MODE=copy \
UV_COMPILE_BYTECODE=1 \
UV_PYTHON_DOWNLOADS=never
# Install dependencies (cache mount may not persist on HF Spaces but doesn't hurt)
RUN --mount=type=cache,target=/root/.cache/uv \
--mount=type=bind,source=uv.lock,target=uv.lock \
--mount=type=bind,source=pyproject.toml,target=pyproject.toml \
uv sync --frozen --no-install-project --no-dev
FROM ghcr.io/astral-sh/uv:python3.12-bookworm-slim
ARG DEBIAN_FRONTEND="noninteractive"
# HuggingFace Spaces requires UID 1000 (not 2222)
ARG NON_ROOT_USER="user"
ARG NON_ROOT_UID="1000"
ARG NON_ROOT_GID="1000"
ARG HOME_DIR="/home/${NON_ROOT_USER}"
ARG REPO_DIR="${HOME_DIR}/app"
RUN useradd -l -m -s /bin/bash -u ${NON_ROOT_UID} ${NON_ROOT_USER}
RUN apt update -qy && \
apt -qyy install curl git && \
apt clean && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
ENV PYTHONIOENCODING=utf8 \
LANG="C.UTF-8" \
LC_ALL="C.UTF-8" \
PATH="${HOME_DIR}/.local/bin:${REPO_DIR}/.venv/bin:$PATH"
USER ${NON_ROOT_USER}
WORKDIR ${REPO_DIR}
# Copy virtual environment from build stage
COPY --from=build --chown=${NON_ROOT_USER}:${NON_ROOT_GID} /app/.venv ${REPO_DIR}/.venv
# Copy application code
COPY --chown=${NON_ROOT_USER}:${NON_ROOT_GID} backend/ backend/
COPY --chown=${NON_ROOT_USER}:${NON_ROOT_GID} database/ database/
COPY --chown=${NON_ROOT_USER}:${NON_ROOT_GID} app.py .
EXPOSE 7860
CMD ["sh", "-c", "python app.py > /dev/null 2>&1"]