44
55ARG PY_VER=3.10
66ARG TF_VER=2.9.2
7- ARG BUILD_TYPE=gpu
7+ ARG BUILD_TYPE=cpu
88ARG CUDA_TAG=11.8.0-cudnn8-runtime-ubuntu22.04
9-
10- # ==============================================================================
11- # === CPU base image (minimal) =================================================
9+ ARG CUDA_DEVEL_TAG=11.8.0-cudnn8-devel-ubuntu22.04
1210
1311FROM python:${PY_VER}-slim-bookworm AS cpu-base
1412ENV DEBIAN_FRONTEND=noninteractive
@@ -17,61 +15,47 @@ RUN apt-get update && \
1715 build-essential gcc g++ python3-dev python3-rtree \
1816 gdal-bin libgdal-dev python3-gdal python3-opencv libspatialindex-dev \
1917 && rm -rf /var/lib/apt/lists/*
20- # ==============================================================================
21- # === GPU base image (CUDA + runtime-only Python & GDAL) =======================
18+
19+ FROM nvidia/cuda:${CUDA_DEVEL_TAG} AS cuda-dev
20+
2221FROM nvidia/cuda:${CUDA_TAG} AS gpu-base
2322ENV DEBIAN_FRONTEND=noninteractive
2423RUN apt-get update && \
2524 apt-get install -y --no-install-recommends \
26- python3 python3-pip build-essential gcc g++ python3-dev python3-rtree python-is-python3 \
27- gdal-bin libgdal-dev python3-gdal python3-opencv libspatialindex-dev cuda-toolkit-11-8 \
28- && rm -rf /var/lib/apt/lists/* && \
29- python3 -m pip install --upgrade pip
25+ python3 python3-pip python3-rtree python-is-python3 \
26+ gdal-bin libgdal-dev python3-gdal python3-opencv \
27+ libspatialindex-dev libpq-dev \
28+ && rm -rf /var/lib/apt/lists/* \
29+ && python3 -m pip install --upgrade pip
30+ COPY --from=cuda-dev /usr/local/cuda/nvvm/libdevice /usr/local/cuda/nvvm/libdevice
3031
31- # ==============================================================================
32- # === Builder stage (installs everything) ======================================
3332FROM ${BUILD_TYPE}-base AS builder
3433ENV DEBIAN_FRONTEND=noninteractive
3534ARG TF_VER
36- ARG BUILD_TYPE
37-
3835COPY docker/pipped-requirements.txt /tmp/pipped-requirements.txt
39-
40-
41- # Use pip cache and install Python packages (including building GDAL)
4236RUN --mount=type=cache,target=/root/.cache/pip \
4337 pip install --no-cache-dir --upgrade pip more-itertools && \
4438 pip install --no-cache-dir tensorflow==${TF_VER} && \
45- pip install "GDAL==$(gdal-config --version)" && \
39+ pip install --no-cache-dir "GDAL==$(gdal-config --version)" && \
4640 pip install --no-cache-dir -r /tmp/pipped-requirements.txt
47-
48- # Install solaris (local)
4941COPY solaris /tmp/solaris
5042RUN --mount=type=cache,target=/root/.cache/pip \
5143 pip install --no-cache-dir /tmp/solaris
52-
53- # Install scikit-fmm
5444RUN --mount=type=cache,target=/root/.cache/pip \
5545 pip install --no-cache-dir scikit-fmm
56-
57- # Install ramp (local)
5846COPY setup.py README.md /tmp/ramp-code/
5947COPY ramp /tmp/ramp-code/ramp
6048RUN --mount=type=cache,target=/root/.cache/pip \
6149 pip install --no-cache-dir /tmp/ramp-code
6250
63- # ==============================================================================
64- # === Final minimal runtime image ==============================================
6551FROM ${BUILD_TYPE}-base AS final
6652ENV DEBIAN_FRONTEND=noninteractive
67-
6853ENV CPLUS_INCLUDE_PATH=/usr/include/gdal \
6954 C_INCLUDE_PATH=/usr/include/gdal \
7055 RAMP_HOME=/app
71-
7256COPY --from=builder /usr/local /usr/local
7357COPY --from=builder /usr/lib/python*/ /usr/lib/python*/
7458COPY --from=builder /usr/include/gdal /usr/include/gdal
75-
59+ COPY --from=cuda-dev /usr/local/cuda/nvvm/libdevice /usr/local/cuda/nvvm/libdevice
7660WORKDIR /app
7761CMD ["bash"]
0 commit comments