FROM python:3.13-slim AS builder

COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/

ENV UV_LINK_MODE=copy \
    UV_COMPILE_BYTECODE=1 \
    UV_PYTHON_DOWNLOADS=never \
    UV_PYTHON=python3.13 \
    UV_PROJECT_ENVIRONMENT="/app/.venv"

# Install dependencies
COPY ./pyproject.toml ./uv.lock ./
RUN uv sync --extra server --no-dev --locked --no-install-project

FROM python:3.13-slim

ENV PATH="/app/.venv/bin:$PATH"

COPY --from=builder --chown=app:app /app/.venv /app/.venv

COPY . /app
RUN mkdir -p /app/data && chmod 755 /app/data

WORKDIR /app

EXPOSE 8000

ENTRYPOINT ["docker/entrypoint.sh"]
CMD ["docker/start.sh"]
