|
1 |
| -FROM python:3.13-slim-bookworm |
| 1 | +# ----- |
| 2 | +# Build |
| 3 | +# ----- |
| 4 | +FROM python:3.13-bookworm AS build |
| 5 | + |
| 6 | +# For more verbose output, use: |
| 7 | +# export BUILDKIT_PROGRESS=plain |
2 | 8 |
|
3 | 9 | # Configure operating system
|
4 | 10 | ENV DEBIAN_FRONTEND=noninteractive
|
5 | 11 | ENV TERM=linux
|
6 | 12 |
|
| 13 | +# Configure build environment |
| 14 | +ENV PIP_ROOT_USER_ACTION=ignore |
| 15 | +ENV UV_COMPILE_BYTECODE=true |
| 16 | +ENV UV_LINK_MODE=copy |
| 17 | +ENV UV_PYTHON_DOWNLOADS=never |
| 18 | + |
7 | 19 | # Provide package sources
|
8 | 20 | COPY . /src
|
9 | 21 |
|
10 | 22 | # Install package and dependencies
|
11 |
| -ENV UV_COMPILE_BYTECODE=true |
12 |
| -ENV UV_NO_CACHE=true |
13 |
| -ENV UV_PYTHON_DOWNLOADS=never |
14 |
| -ENV UV_SYSTEM_PYTHON=true |
15 | 23 | RUN \
|
| 24 | + --mount=type=cache,id=pip,target=/root/.cache/pip \ |
| 25 | + --mount=type=cache,id=uv,target=/root/.cache/uv \ |
16 | 26 | true \
|
17 |
| - # Install package. |
18 | 27 | && pip install uv \
|
19 |
| - && uv pip install /src \ |
20 |
| - && uv pip uninstall uv \ |
21 |
| - # Install `jq`. |
22 |
| - && apt-get update \ |
23 |
| - && apt-get install --no-install-recommends --no-install-suggests --yes jq \ |
24 |
| - # Tear down. |
25 |
| - && apt-get autoremove --yes \ |
26 |
| - && apt-get autoclean --yes \ |
27 |
| - && rm -rf /var/lib/apt/lists/* \ |
28 |
| - && rm -rf /root/.cache \ |
29 |
| - && rm -rf /src \ |
30 |
| - && rm -rf /tmp/* |
| 28 | + && uv venv --no-project --relocatable /app \ |
| 29 | + && uv pip install --directory=/app /src |
| 30 | + |
| 31 | +# Install optional software |
| 32 | +RUN wget --quiet --output-document=/tmp/jq "https://github.com/jqlang/jq/releases/download/jq-1.7.1/jq-linux-amd64" |
| 33 | +RUN chmod +x /tmp/jq |
| 34 | + |
| 35 | + |
| 36 | +# ------------ |
| 37 | +# Distribution |
| 38 | +# ------------ |
| 39 | +FROM python:3.13-slim-bookworm |
| 40 | +COPY --from=build /app /opt/grafana-wtf |
| 41 | +COPY --from=build /tmp/jq /usr/local/bin/jq |
| 42 | +ENV PATH="$PATH:/opt/grafana-wtf/bin" |
0 commit comments