Files
Jungfraujoch/docker/ubuntu2404/Dockerfile

130 lines
3.5 KiB
Docker

# Ubuntu 24.04 (Noble) base with CUDA 13 devel toolchain
FROM nvidia/cuda:13.0.1-devel-ubuntu24.04
LABEL authors="leonarski_f"
ENV DEBIAN_FRONTEND=noninteractive
ARG OPENSSL_VERSION=3.5.4
ARG NODE_MAJOR=22
ARG EIGEN_TAG=3.4.0
ARG HDF5_TAG="hdf5_1.14.6"
# Update base and install toolchain + Qt dependencies
RUN set -eux; \
apt-get update; \
apt-get install -y --no-install-recommends \
ca-certificates \
curl \
wget \
git \
which \
tar \
xz-utils \
build-essential \
cmake \
ninja-build \
python3 \
python3-requests \
perl \
pkg-config \
gdb \
file \
dpkg-dev \
fakeroot \
libnuma-dev \
libxcb1-dev \
libx11-dev \
libxext-dev \
libxrender-dev \
libxi-dev \
libxrandr-dev \
libxcursor-dev \
libxfixes-dev \
libxinerama-dev \
libxkbcommon-dev \
libxkbcommon-x11-dev \
libx11-xcb-dev \
libxcb-shape0-dev \
libxcb-sync-dev \
libxcb-xfixes0-dev \
libxcb-image0-dev \
libxcb-icccm4-dev \
libxcb-keysyms1-dev \
libxcb-render-util0-dev \
libxcb-util-dev \
libxcb-randr0-dev \
libxcb-xkb-dev \
libxcb-shm0-dev \
libxcb-cursor0 \
libxcb-cursor-dev \
libgl1-mesa-dev \
libegl1-mesa-dev \
libdbus-1-dev \
libtiff-dev \
libjpeg-turbo8-dev \
zlib1g-dev \
libglib2.0-dev \
libfontconfig1-dev \
libopenblas-dev \
libfftw3-dev \
libwayland-dev \
qt6-base-dev \
qt6-charts-dev \
qt6-tools-dev \
qt6-3d-dev \
qt6-wayland-dev \
libeigen3-dev \
libfreetype6-dev; \
apt-get clean; \
rm -rf /var/lib/apt/lists/*
# Build a static OpenSSL
RUN set -eux; \
cd /tmp; \
curl -LO https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz; \
tar -xf openssl-${OPENSSL_VERSION}.tar.gz; \
cd openssl-${OPENSSL_VERSION}; \
./Configure linux-x86_64 no-shared no-module no-tests --prefix=/opt/openssl-${OPENSSL_VERSION} --libdir=lib; \
make -j"$(nproc)"; \
make install_sw; \
cd /; rm -rf /tmp/openssl-${OPENSSL_VERSION} /tmp/openssl-${OPENSSL_VERSION}.tar.gz
# Install Node.js 22 (NodeSource)
RUN set -eux; \
curl -fsSL https://deb.nodesource.com/setup_${NODE_MAJOR}.x | bash -; \
apt-get update; \
apt-get install -y --no-install-recommends nodejs; \
apt-get clean; \
rm -rf /var/lib/apt/lists/*; \
node --version; npm --version; (corepack enable || true)
RUN set -eux; \
git clone --depth 1 --branch ${HDF5_TAG} https://github.com/HDFGroup/hdf5 /tmp/hdf5-src; \
cd /tmp/hdf5-src; \
mkdir build && cd build; \
cmake -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DHDF5_BUILD_SHARED_LIBS=OFF \
-DBUILD_TESTING=OFF \
-DHDF5_BUILD_TOOLS=OFF \
-DHDF5_BUILD_EXAMPLES=OFF \
-DHDF5_ENABLE_SZIP_SUPPORT=OFF \
-DHDF5_ENABLE_SZIP_ENCODING=OFF \
-DHDF5_BUILD_CPP_LIB=OFF \
-DHDF5_ENABLE_Z_LIB_SUPPORT=OFF \
-DCMAKE_INSTALL_PREFIX=/opt/hdf5-${HDF5_TAG}-static ..; \
cmake --build . -j"$(nproc)"; \
cmake --install .; \
rm -rf /tmp/hdf5-src
# Expose static OpenSSL to CMake/pkg-config
ENV OPENSSL_ROOT_DIR=/opt/openssl-${OPENSSL_VERSION}
ENV PKG_CONFIG_PATH=${OPENSSL_ROOT_DIR}/lib/pkgconfig:${OPENSSL_ROOT_DIR}/lib64/pkgconfig:/opt/hdf5-${HDF5_TAG}-static
# Set workdir for your project
WORKDIR /workspace
# Default entrypoint: interactive shell
CMD ["/bin/bash", "-l"]