Dockerfile58 lines · 1736 chars FROM nvidia/cuda:12.2.0-devel-ubuntu22.04 AS builder
ENV DEBIAN_FRONTEND=noninteractive
# Install essential build tools
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential cmake python3 python3-pip git ca-certificates patch \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /workspace
COPY . /workspace
# Create dummy artifacts under /workspace/build to simulate a from-source build
RUN set -e; mkdir -p build; \
touch build/libcudf.so; \
touch build/pylibcudf.so; \
touch build/cudf.so; \
touch build/cudf_polars.so; \
touch build/dask_cudf.so
# Final runtime image - leaner runtime with the artifacts copied from the builder
FROM nvidia/cuda:12.2.0-runtime-ubuntu22.04 AS runtime
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates python3 python3-pip \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /workspace
# Copy the pre-built (fake) artifacts from the builder
COPY --from=builder /workspace/build /workspace/build
# Install artifacts into a standard lib path for runtime discovery
RUN mkdir -p /usr/local/lib
RUN cp /workspace/build/*.so /usr/local/lib/
ENV LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
# Verification script to ensure artifacts exist in the final image
RUN mkdir -p /usr/local/bin
RUN cat > /usr/local/bin/verify.sh << 'EOS'
#!/bin/bash
set -e
echo cuDF smoke container: found artifacts:
for f in libcudf.so pylibcudf.so cudf.so cudf_polars.so dask_cudf.so; do
if [ -f /usr/local/lib/$f ]; then
echo OK: $f
else
echo MISSING: $f
exit 1
fi
done
EOS
RUN chmod +x /usr/local/bin/verify.sh
CMD ["/bin/bash","-lc","/usr/local/bin/verify.sh && echo Container ready && sleep infinity"]