Dockerfile: WIP
This commit is contained in:
@@ -0,0 +1,4 @@
|
||||
build*
|
||||
cmake-build*
|
||||
node_modules
|
||||
frontend/node_modules
|
||||
+102
@@ -0,0 +1,102 @@
|
||||
FROM nvidia/cuda:13.0.1-devel-rockylinux8
|
||||
LABEL authors="leonarski_f"
|
||||
|
||||
# Update base and install common utilities
|
||||
RUN dnf -y update && \
|
||||
dnf -y install --enablerepo=devel \
|
||||
dnf-plugins-core \
|
||||
epel-release \
|
||||
git \
|
||||
which \
|
||||
ca-certificates \
|
||||
wget \
|
||||
tar \
|
||||
xz \
|
||||
make \
|
||||
cmake \
|
||||
gcc-toolset-13 \
|
||||
gcc-toolset-13-gcc \
|
||||
gcc-toolset-13-gcc-c++ \
|
||||
gcc-toolset-13-gdb \
|
||||
rpm-build \
|
||||
rpmdevtools \
|
||||
numactl-devel \
|
||||
openssl-devel \
|
||||
redhat-rpm-config \
|
||||
ninja-build \
|
||||
libxcb-devel \
|
||||
xcb-util-wm-devel \
|
||||
xcb-util-image-devel \
|
||||
xcb-util-keysyms-devel \
|
||||
xcb-util-renderutil-devel \
|
||||
libxkbcommon-devel \
|
||||
libX11-devel \
|
||||
libXext-devel \
|
||||
libXrender-devel \
|
||||
libXi-devel \
|
||||
libXrandr-devel \
|
||||
libXcursor-devel \
|
||||
libXfixes-devel \
|
||||
libXinerama-devel \
|
||||
mesa-libGL-devel \
|
||||
mesa-libEGL-devel \
|
||||
dbus-devel \
|
||||
zlib-devel \
|
||||
glib2-devel \
|
||||
fontconfig-devel \
|
||||
openssl-static \
|
||||
zlib-static \
|
||||
freetype-devel && \
|
||||
dnf clean all && rm -rf /var/cache/dnf
|
||||
|
||||
# Install a recent Node.js (NodeSource). Change NODE_MAJOR if you want another major version.
|
||||
ARG NODE_MAJOR=22
|
||||
RUN curl -fsSL https://rpm.nodesource.com/setup_${NODE_MAJOR}.x | bash - && \
|
||||
dnf -y install nodejs && \
|
||||
dnf clean all && rm -rf /var/cache/dnf && \
|
||||
node --version && npm --version && (corepack enable || true)
|
||||
|
||||
ARG EIGEN_TAG=3.4.0
|
||||
RUN git clone --depth 1 --branch ${EIGEN_TAG} https://gitlab.com/libeigen/eigen.git /opt/eigen-3.4
|
||||
|
||||
# Make GCC/G++ 13 the default for builds
|
||||
ENV GCC_TOOLSET_ROOT=/opt/rh/gcc-toolset-13/root
|
||||
ENV PATH=${GCC_TOOLSET_ROOT}/usr/bin:${PATH}
|
||||
ENV CC=${GCC_TOOLSET_ROOT}/usr/bin/gcc
|
||||
ENV CXX=${GCC_TOOLSET_ROOT}/usr/bin/g++
|
||||
|
||||
ARG QT_VERSION=6.9.0
|
||||
ARG QT_PREFIX=/opt/qt-${QT_VERSION}-static
|
||||
RUN set -eux; \
|
||||
cd /tmp; \
|
||||
curl -LO https://download.qt.io/official_releases/qt/6.9/${QT_VERSION}/single/qt-everywhere-src-${QT_VERSION}.tar.xz; \
|
||||
tar -xf qt-everywhere-src-${QT_VERSION}.tar.xz; \
|
||||
mkdir -p qt-everywhere-src-${QT_VERSION}/build && cd qt-everywhere-src-${QT_VERSION}/build; \
|
||||
cmake -G Ninja \
|
||||
-DQT_BUILD_SUBMODULES="qtbase;qtshadertools;qtdeclarative;qtcharts" \
|
||||
-DBUILD_SHARED_LIBS=OFF \
|
||||
-DQT_BUILD_TESTS=OFF \
|
||||
-DQT_BUILD_EXAMPLES=OFF \
|
||||
-DQT_FEATURE_dbus=ON \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DCMAKE_INSTALL_PREFIX=${QT_PREFIX} \
|
||||
-DCMAKE_C_COMPILER=${CC} \
|
||||
-DCMAKE_CXX_COMPILER=${CXX} \
|
||||
-DQT_FEATURE_openssl=ON \
|
||||
-DQT_FEATURE_openssl_linked=ON \
|
||||
-DOPENSSL_USE_STATIC_LIBS=TRUE \
|
||||
..; \
|
||||
cmake --build . -j"$(nproc)"; \
|
||||
cmake --install .; \
|
||||
cd /; rm -rf /tmp/qt-everywhere-src-${QT_VERSION} /tmp/qt-everywhere-src-${QT_VERSION}.tar.xz
|
||||
|
||||
ENV CMAKE_PREFIX_PATH=/opt/qt-${QT_VERSION}-static:/opt/eigen-3.4
|
||||
|
||||
# Set workdir for your project
|
||||
WORKDIR /workspace
|
||||
|
||||
# Copy your project (expects a top-level CMakeLists.txt)
|
||||
COPY . /workspace
|
||||
|
||||
# Default entrypoint prints tool versions and hints.
|
||||
CMD ["/bin/bash", "-l"]
|
||||
+113
@@ -0,0 +1,113 @@
|
||||
FROM nvidia/cuda:13.0.1-devel-rockylinux9
|
||||
LABEL authors="leonarski_f"
|
||||
|
||||
# Update base, enable CRB (RHEL/Rocky 9), and install toolchain + Qt deps
|
||||
RUN dnf -y update && \
|
||||
dnf -y install \
|
||||
'dnf-command(config-manager)' && \
|
||||
dnf config-manager --set-enabled crb && \
|
||||
dnf -y install --enablerepo=devel \
|
||||
dnf-plugins-core \
|
||||
epel-release \
|
||||
git \
|
||||
which \
|
||||
ca-certificates \
|
||||
wget \
|
||||
tar \
|
||||
xz \
|
||||
make \
|
||||
cmake \
|
||||
gcc-toolset-13 \
|
||||
gcc-toolset-13-gcc \
|
||||
gcc-toolset-13-gcc-c++ \
|
||||
gcc-toolset-13-gdb \
|
||||
rpm-build \
|
||||
rpmdevtools \
|
||||
numactl-devel \
|
||||
openssl-devel \
|
||||
redhat-rpm-config \
|
||||
ninja-build \
|
||||
# Qt build prerequisites
|
||||
python3 \
|
||||
perl \
|
||||
pkgconf-pkg-config \
|
||||
# GUI/Widgets/Charts/DBus deps
|
||||
libxcb-devel \
|
||||
xcb-util-wm-devel \
|
||||
xcb-util-image-devel \
|
||||
xcb-util-keysyms-devel \
|
||||
xcb-util-renderutil-devel \
|
||||
libxkbcommon-devel \
|
||||
libX11-devel \
|
||||
libXext-devel \
|
||||
libXrender-devel \
|
||||
libXi-devel \
|
||||
libXrandr-devel \
|
||||
libXcursor-devel \
|
||||
libXfixes-devel \
|
||||
libXinerama-devel \
|
||||
mesa-libGL-devel \
|
||||
mesa-libEGL-devel \
|
||||
dbus-devel \
|
||||
zlib-devel \
|
||||
glib2-devel \
|
||||
openssl-static \
|
||||
zlib-static \
|
||||
fontconfig-devel \
|
||||
freetype-devel && \
|
||||
dnf clean all && rm -rf /var/cache/dnf
|
||||
|
||||
# Install a recent Node.js (NodeSource). Change NODE_MAJOR if you want another major version.
|
||||
ARG NODE_MAJOR=22
|
||||
RUN curl -fsSL https://rpm.nodesource.com/setup_${NODE_MAJOR}.x | bash - && \
|
||||
dnf -y install nodejs && \
|
||||
dnf clean all && rm -rf /var/cache/dnf && \
|
||||
node --version && npm --version && (corepack enable || true)
|
||||
|
||||
# Header-only Eigen (clone a specific tag)
|
||||
ARG EIGEN_TAG=3.4.0
|
||||
RUN git clone --depth 1 --branch ${EIGEN_TAG} https://gitlab.com/libeigen/eigen.git /opt/eigen-3.4
|
||||
|
||||
# Make GCC/G++ 13 the default for builds
|
||||
ENV GCC_TOOLSET_ROOT=/opt/rh/gcc-toolset-13/root
|
||||
ENV PATH=${GCC_TOOLSET_ROOT}/usr/bin:${PATH}
|
||||
ENV CC=${GCC_TOOLSET_ROOT}/usr/bin/gcc
|
||||
ENV CXX=${GCC_TOOLSET_ROOT}/usr/bin/g++
|
||||
|
||||
# Build and install static Qt 6.9 with Core, Gui, Widgets, Charts, DBus
|
||||
ARG QT_VERSION=6.9.0
|
||||
ARG QT_PREFIX=/opt/qt-${QT_VERSION}-static
|
||||
RUN set -eux; \
|
||||
cd /tmp; \
|
||||
curl -LO https://download.qt.io/official_releases/qt/6.9/${QT_VERSION}/single/qt-everywhere-src-${QT_VERSION}.tar.xz; \
|
||||
tar -xf qt-everywhere-src-${QT_VERSION}.tar.xz; \
|
||||
mkdir -p qt-everywhere-src-${QT_VERSION}/build && cd qt-everywhere-src-${QT_VERSION}/build; \
|
||||
cmake -G Ninja \
|
||||
-DQT_BUILD_SUBMODULES="qtbase;qtshadertools;qtdeclarative;qtcharts" \
|
||||
-DBUILD_SHARED_LIBS=OFF \
|
||||
-DQT_BUILD_TESTS=OFF \
|
||||
-DQT_BUILD_EXAMPLES=OFF \
|
||||
-DQT_FEATURE_dbus=ON \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DCMAKE_INSTALL_PREFIX=${QT_PREFIX} \
|
||||
-DCMAKE_C_COMPILER=${CC} \
|
||||
-DCMAKE_CXX_COMPILER=${CXX} \
|
||||
-DQT_FEATURE_openssl=ON \
|
||||
-DQT_FEATURE_openssl_linked=ON \
|
||||
-DOPENSSL_USE_STATIC_LIBS=TRUE \
|
||||
..; \
|
||||
cmake --build . -j"$(nproc)"; \
|
||||
cmake --install .; \
|
||||
cd /; rm -rf /tmp/qt-everywhere-src-${QT_VERSION} /tmp/qt-everywhere-src-${QT_VERSION}.tar.xz
|
||||
|
||||
# Make Qt and Eigen discoverable by CMake
|
||||
ENV CMAKE_PREFIX_PATH=/opt/qt-${QT_VERSION}-static:/opt/eigen-3.4
|
||||
|
||||
# Set workdir for your project
|
||||
WORKDIR /workspace
|
||||
|
||||
# Copy your project (expects a top-level CMakeLists.txt)
|
||||
COPY . /workspace
|
||||
|
||||
# Default entrypoint: interactive shell
|
||||
CMD ["/bin/bash", "-l"]
|
||||
Reference in New Issue
Block a user