diff --git a/.github/workflows/build-push-docker.yaml b/.github/workflows/build-push-docker.yaml index af4ff27..a8072b9 100644 --- a/.github/workflows/build-push-docker.yaml +++ b/.github/workflows/build-push-docker.yaml @@ -23,7 +23,7 @@ on: env: DOCKER_ORG: nebari - GPU_BASE_IMAGE: nvidia/cuda:12.8.1-base-ubuntu24.04 + GPU_BASE_IMAGE: nvidia/cuda:12.8.1-runtime-ubuntu24.04 GPU_IMAGE_SUFFIX: gpu BASE_IMAGE: ubuntu:24.04 @@ -87,6 +87,7 @@ jobs: echo "GPU Platform Matrix" echo "BASE_IMAGE=$GPU_BASE_IMAGE" >> $GITHUB_ENV echo "IMAGE_SUFFIX=-$GPU_IMAGE_SUFFIX" >> $GITHUB_ENV + echo "GPU=true" >> $GITHUB_ENV - name: "Generate Docker images tags 🏷️" id: meta @@ -119,5 +120,7 @@ jobs: labels: ${{ steps.meta.outputs.labels }} cache-from: type=gha cache-to: type=gha,mode=max - build-args: BASE_IMAGE=${{ env.BASE_IMAGE }} + build-args: | + BASE_IMAGE=${{ env.BASE_IMAGE }} + GPU=${{ env.GPU }} platforms: linux/amd64,linux/arm64 diff --git a/.github/workflows/test-images.yaml b/.github/workflows/test-images.yaml index 4845c41..35107d7 100644 --- a/.github/workflows/test-images.yaml +++ b/.github/workflows/test-images.yaml @@ -17,7 +17,7 @@ on: env: DOCKER_ORG: nebari GITHUB_SHA: ${{ github.sha }} - GPU_BASE_IMAGE: nvidia/cuda:12.8.1-base-ubuntu24.04 + GPU_BASE_IMAGE: nvidia/cuda:12.8.1-runtime-ubuntu24.04 GPU_IMAGE_SUFFIX: gpu BASE_IMAGE: ubuntu:24.04 diff --git a/Dockerfile b/Dockerfile index b634b69..d2b00d7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,5 @@ -FROM ubuntu:24.04 AS builder +ARG BASE_IMAGE=ubuntu:24.04 +FROM ${BASE_IMAGE} AS builder LABEL MAINTAINER="Nebari development team" RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ @@ -29,9 +30,10 @@ RUN --mount=type=cache,target=/opt/conda/pkgs,sharing=locked \ --mount=type=cache,target=/root/.cache/pip,sharing=locked \ /opt/scripts/install-conda-environment.sh /opt/dask-worker/environment.yaml 'false' -ENV LD_LIBRARY_PATH=/usr/local/nvidia/lib64 -ENV NVIDIA_PATH=/usr/local/nvidia/bin -ENV PATH="$NVIDIA_PATH:$PATH" +ARG GPU=false +ENV LD_LIBRARY_PATH=${GPU:+/usr/local/nvidia/lib64} +ENV NVIDIA_PATH=${GPU:+/usr/local/nvidia/bin} +ENV PATH=${GPU:+/usr/local/nvidia/bin:}${PATH} COPY dask-worker /opt/dask-worker RUN /opt/dask-worker/postBuild @@ -90,12 +92,13 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ # ========== jupyterlab install =========== FROM intermediate AS jupyterlab +ARG GPU=false ENV CONDA_DIR=/opt/conda \ DEFAULT_ENV=default \ - LD_LIBRARY_PATH=/usr/local/nvidia/lib64 \ - NVIDIA_PATH=/usr/local/nvidia/bin + LD_LIBRARY_PATH=${GPU:+/usr/local/nvidia/lib64} \ + NVIDIA_PATH=${GPU:+/usr/local/nvidia/bin} -ENV PATH="$NVIDIA_PATH:$PATH" +ENV PATH=${GPU:+/usr/local/nvidia/bin:}${PATH} RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ --mount=type=cache,target=/var/lib/apt,sharing=locked \