Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 32 additions & 2 deletions docker/base_images/base_image.Dockerfile.jinja
Original file line number Diff line number Diff line change
@@ -1,10 +1,32 @@
{% if use_gpu %}
FROM nvidia/cuda:12.2.2-base-ubuntu22.04
ARG BUILD_CUDA_FLAVOR=base # base | devel
ARG RUNTIME_CUDA_FLAVOR=base # base | devel

# --- build stage (optional compile, e.g., CUDA ops via pip) ---
FROM nvidia/cuda:12.2.2-${BUILD_CUDA_FLAVOR}-ubuntu20.04 AS build
ENV PYTHONUNBUFFERED="True"
ENV DEBIAN_FRONTEND="noninteractive"
# Minimal Python toolchain just to build wheels
RUN apt-get update && \
apt-get install -y --no-install-recommends \
bash git curl ca-certificates software-properties-common \
python{{python_version}} python{{python_version}}-venv python{{python_version}}-dev && \
rm -rf /var/lib/apt/lists/*
RUN ln -sf /usr/bin/python{{python_version}} /usr/bin/python3 && \
curl https://bootstrap.pypa.io/get-pip.py -o /tmp/get-pip.py && \
python3 /tmp/get-pip.py && \
python3 -m pip install --no-cache-dir --upgrade pip
COPY ./requirements.txt /tmp/requirements.txt
# Build wheels here (CUDA extensions will use nvcc if BUILD_CUDA_FLAVOR=devel)
RUN python3 -m pip wheel --no-deps -r /tmp/requirements.txt -w /wheelhouse

# --- runtime stage (what you actually run) ---
FROM nvidia/cuda:12.2.2-${RUNTIME_CUDA_FLAVOR}-ubuntu20.04
ENV CUDNN_VERSION="8.9.5.29"
ENV CUDA="12.2"
ENV LD_LIBRARY_PATH="/usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH"

RUN apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/3bf863cc.pub && \
RUN apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/3bf863cc.pub && \
apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
cuda-command-line-tools-12-2 \
Expand Down Expand Up @@ -57,5 +79,13 @@ RUN pip install --no-cache-dir --upgrade pip \
&& rm -rf /root/.cache/pip

COPY ./requirements.txt requirements.txt
{% if use_gpu %}
# Prefer prebuilt wheels (from build stage); fall back to source if not present.
COPY --from=build /wheelhouse /opt/wheelhouse
RUN (ls -1 /opt/wheelhouse/*.whl >/dev/null 2>&1 && pip install --no-cache-dir /opt/wheelhouse/*.whl) || \
pip install --no-cache-dir -r requirements.txt \
&& rm -rf /root/.cache/pip
{% else %}
RUN pip install --no-cache-dir -r requirements.txt \
&& rm -rf /root/.cache/pip
{% endif %}