diff options
Diffstat (limited to 'Dockerfile')
-rw-r--r-- | Dockerfile | 36 |
1 files 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"] |