From 04966343af90ac5f8756dd6d56a24584033f6fbb Mon Sep 17 00:00:00 2001 From: Joe Banks Date: Tue, 15 Jul 2025 22:31:30 +0100 Subject: Update Dockerfile to use uv --- Dockerfile | 36 +++++++++++++++++++++++++++++------- 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/Dockerfile b/Dockerfile index 41282e00c..0b1672763 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,16 +1,38 @@ -FROM --platform=linux/amd64 ghcr.io/owl-corp/python-poetry-base:3.12-slim +ARG python_version=3.12-slim + +FROM python:$python_version AS builder +COPY --from=ghcr.io/astral-sh/uv:0.7 /uv /bin/ + +ENV UV_COMPILE_BYTECODE=1 \ + UV_LINK_MODE=copy + +# Install project dependencies with build tools available +WORKDIR /build +RUN pip install --no-cache-dir --upgrade pip setuptools wheel virtualenv \ + && python -m virtualenv .venv + +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-dev + +# ------------------------------------------------------------------------------- + +FROM python:$python_version # Define Git SHA build argument for sentry ARG git_sha="development" ENV GIT_SHA=$git_sha -# Install project dependencies -WORKDIR /bot -COPY pyproject.toml poetry.lock ./ -RUN poetry install --without dev +# Install dependencies from build cache +# .venv not put in /app so that it doesn't conflict with the dev +# volume we use to avoid rebuilding image every code change locally +COPY --from=builder /build /build +ENV PATH="/build/.venv/bin:$PATH" # Copy the source code in last to optimize rebuilding the image +WORKDIR /bot COPY . . -ENTRYPOINT ["poetry"] -CMD ["run", "python", "-m", "bot"] +ENTRYPOINT ["python", "-m"] +CMD ["bot"] -- cgit v1.2.3