|
1 | | -FROM python:3.8-slim-buster |
| 1 | +FROM python:3.13-slim-bookworm AS base |
| 2 | +COPY --from=ghcr.io/astral-sh/uv:0.7.4 /uv /uvx /bin/ |
2 | 3 |
|
3 | 4 | LABEL maintainer="IFRC" |
4 | 5 | LABEL org.opencontainers.image.source="https://github.com/IFRCGo/go-risk-module-api" |
5 | 6 |
|
6 | 7 | ENV PYTHONUNBUFFERED=1 |
7 | 8 |
|
| 9 | +ENV UV_COMPILE_BYTECODE=1 |
| 10 | +ENV UV_LINK_MODE=copy |
| 11 | +ENV UV_PROJECT_ENVIRONMENT="/usr/local/" |
| 12 | + |
8 | 13 | WORKDIR /code |
9 | 14 |
|
10 | | -RUN apt-get -y update \ |
| 15 | +RUN --mount=type=cache,target=/root/.cache/uv \ |
| 16 | + --mount=type=bind,source=uv.lock,target=uv.lock \ |
| 17 | + --mount=type=bind,source=pyproject.toml,target=pyproject.toml \ |
| 18 | + apt-get update -y \ |
11 | 19 | && apt-get install -y --no-install-recommends \ |
12 | | - git \ |
13 | | - g++ \ |
14 | | - curl \ |
15 | | - wait-for-it \ |
16 | | - gdal-bin \ |
17 | | - libgdal-dev |
18 | | - |
19 | | - |
20 | | -ARG CPLUS_INCLUDE_PATH=/usr/include/gdal |
21 | | -ARG C_INCLUDE_PATH=/usr/include/gdal |
22 | | -RUN pip install GDAL==2.4.0 |
23 | | - |
24 | | -COPY pyproject.toml poetry.lock /code/ |
25 | | - |
26 | | -# Upgrade pip and install python packages for code |
27 | | -RUN pip install --upgrade --no-cache-dir pip poetry \ |
28 | | - && poetry --version \ |
29 | | - # Configure to use system instead of virtualenvs |
30 | | - && poetry config virtualenvs.create false \ |
31 | | - && poetry install --no-root \ |
32 | | - # Remove installer |
33 | | - && pip uninstall -y poetry virtualenv-clone virtualenv |
| 20 | + # Build required packages |
| 21 | + gdal-bin build-essential gcc g++ libc-dev libgdal-dev libproj-dev \ |
| 22 | + # Helper packages |
| 23 | + git curl wait-for-it procps \ |
| 24 | + && uv lock --locked --offline \ |
| 25 | + && uv sync --frozen --no-install-project --all-groups \ |
| 26 | + # Clean-up |
| 27 | + && apt-get remove -y build-essential gcc g++ libc-dev libgdal-dev libproj-dev \ |
| 28 | + && apt-get autoremove -y \ |
| 29 | + && rm -rf /var/lib/apt/lists/* |
34 | 30 |
|
35 | 31 |
|
36 | 32 | COPY . /code/ |
0 commit comments