mirror of
https://git.gfz-potsdam.de/naaice/poet.git
synced 2025-12-15 12:28:22 +01:00
build: Enhance Dockerfile for improved environment setup and dependency management
This commit is contained in:
parent
0d9162fb66
commit
db7a2ad2ce
@ -1,61 +1,83 @@
|
|||||||
FROM gcc:11.2.0
|
FROM gcc:11.2.0 AS builder
|
||||||
|
|
||||||
ENV DEBIAN_FRONTEND=noninteractive
|
ENV DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
RUN apt-get update \
|
RUN apt-get update \
|
||||||
&& apt-get install -y \
|
&& apt-get install -y \
|
||||||
git \
|
|
||||||
sudo \
|
sudo \
|
||||||
|
git \
|
||||||
ninja-build \
|
ninja-build \
|
||||||
fzf \
|
libmpfr-dev \
|
||||||
libblas-dev && \
|
python3-dev && \
|
||||||
apt-get clean && \
|
apt-get clean && \
|
||||||
rm -rf /var/lib/apt/lists/*
|
rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
WORKDIR /tmp
|
WORKDIR /tmp
|
||||||
|
|
||||||
RUN curl -Ls https://download.open-mpi.org/release/open-mpi/v5.0/openmpi-5.0.5.tar.gz | tar xz && \
|
ARG OPENMPI_VERSION=4.1.1
|
||||||
cd openmpi-5.0.5 && \
|
ADD https://download.open-mpi.org/release/open-mpi/v${OPENMPI_VERSION%.*}/openmpi-${OPENMPI_VERSION}.tar.gz /tmp/openmpi.tar.gz
|
||||||
|
|
||||||
|
RUN mkdir openmpi && \
|
||||||
|
tar xf openmpi.tar.gz -C openmpi --strip-components 1 && \
|
||||||
|
cd openmpi && \
|
||||||
./configure --prefix=/usr/local && \
|
./configure --prefix=/usr/local && \
|
||||||
make -j $(nproc) && \
|
make -j $(nproc) && \
|
||||||
make install && \
|
make install && \
|
||||||
rm -rf /tmp/openmpi-5.0.5
|
rm -rf /tmp/openmpi tmp/openmpi.tar.gz
|
||||||
|
|
||||||
RUN curl -Lo cmake.sh https://github.com/Kitware/CMake/releases/download/v3.30.5/cmake-3.30.5-linux-x86_64.sh \
|
ARG CMAKE_VERSION=3.30.5
|
||||||
&& bash ./cmake.sh --skip-license --prefix=/usr/local \
|
ADD https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-linux-x86_64.sh /tmp/cmake.sh
|
||||||
|
|
||||||
|
RUN bash ./cmake.sh --skip-license --prefix=/usr/local \
|
||||||
&& rm cmake.sh
|
&& rm cmake.sh
|
||||||
|
|
||||||
RUN curl -Ls https://github.com/Reference-LAPACK/lapack/archive/refs/tags/v3.12.0.tar.gz | tar xz && \
|
ARG LAPACK_VERSION=3.12.0
|
||||||
cd lapack-3.12.0 && \
|
ADD https://github.com/Reference-LAPACK/lapack/archive/refs/tags/v${LAPACK_VERSION}.tar.gz /tmp/lapack.tar.gz
|
||||||
|
|
||||||
|
RUN mkdir lapack && \
|
||||||
|
tar xf lapack.tar.gz -C lapack --strip-components 1 && \
|
||||||
|
cd lapack && \
|
||||||
mkdir build && \
|
mkdir build && \
|
||||||
cd build && \
|
cd build && \
|
||||||
cmake .. -G Ninja -DBUILD_SHARED_LIBS=ON && \
|
cmake .. -G Ninja -DBUILD_SHARED_LIBS=ON && \
|
||||||
ninja install && \
|
ninja install && \
|
||||||
rm -rf /tmp/lapack-3.12.0
|
rm -rf /tmp/lapack tmp/lapack.tar.gz
|
||||||
|
|
||||||
RUN curl -Ls https://cran.r-project.org/src/base/R-4/R-4.4.2.tar.gz | tar xz && \
|
ARG R_VERSION=4.4.2
|
||||||
cd R-4.4.2 && \
|
ADD https://cran.r-project.org/src/base/R-${R_VERSION%%.*}/R-${R_VERSION}.tar.gz /tmp/R.tar.gz
|
||||||
|
|
||||||
|
RUN mkdir R && \
|
||||||
|
tar xf R.tar.gz -C R --strip-components 1 && \
|
||||||
|
cd R && \
|
||||||
./configure --prefix=/usr/local --enable-R-shlib --with-blas --with-lapack && \
|
./configure --prefix=/usr/local --enable-R-shlib --with-blas --with-lapack && \
|
||||||
make -j $(nproc) && \
|
make -j $(nproc) && \
|
||||||
make install && \
|
make install && \
|
||||||
rm -rf /tmp/R-4.4.2
|
rm -rf /tmp/R tmp/R.tar.gz
|
||||||
|
|
||||||
RUN /usr/local/bin/R -q -e "install.packages(c('Rcpp', 'RInside', 'qs'), repos='https://cran.rstudio.com/')"
|
RUN /usr/local/bin/R -q -e "install.packages(c('Rcpp', 'RInside', 'qs'), repos='https://cran.rstudio.com/')"
|
||||||
|
|
||||||
RUN curl -Ls https://gitlab.com/libeigen/eigen/-/archive/3.4.0/eigen-3.4.0.tar.bz2 | tar xj \
|
ARG EIGEN_VERSION=3.4.0
|
||||||
&& mkdir /tmp/eigen-3.4.0/build \
|
ADD https://gitlab.com/libeigen/eigen/-/archive/${EIGEN_VERSION}/eigen-${EIGEN_VERSION}.tar.bz2 /tmp/eigen.tar.bz2
|
||||||
&& cd /tmp/eigen-3.4.0/build \
|
|
||||||
&& cmake .. -G Ninja \
|
|
||||||
&& ninja install \
|
|
||||||
&& rm -rf /tmp/eigen-3.4.0
|
|
||||||
|
|
||||||
RUN git clone https://github.com/doctest/doctest.git /doctest \
|
RUN mkdir eigen && \
|
||||||
&& cd /doctest \
|
tar xf eigen.tar.bz2 -C eigen --strip-components 1 && \
|
||||||
&& mkdir build \
|
cd eigen && \
|
||||||
&& cd build \
|
mkdir build && \
|
||||||
&& cmake .. \
|
cd build && \
|
||||||
&& make install \
|
cmake .. -G Ninja && \
|
||||||
&& rm -rf /doctest
|
ninja install && \
|
||||||
|
rm -rf /tmp/eigen tmp/eigen.tar.bz2
|
||||||
|
|
||||||
|
ARG GDB_VERSION=15.2
|
||||||
|
ADD https://ftp.gnu.org/gnu/gdb/gdb-${GDB_VERSION}.tar.xz /tmp/gdb.tar.xz
|
||||||
|
|
||||||
|
RUN mkdir gdb && \
|
||||||
|
tar xf gdb.tar.xz -C gdb --strip-components 1 && \
|
||||||
|
cd gdb && \
|
||||||
|
./configure --prefix=/usr/local && \
|
||||||
|
make -j $(nproc) && \
|
||||||
|
make install && \
|
||||||
|
rm -rf /tmp/gdb tmp/gdb.tar.xz
|
||||||
|
|
||||||
RUN useradd -m -s /bin/bash -G sudo vscode \
|
RUN useradd -m -s /bin/bash -G sudo vscode \
|
||||||
&& echo "vscode ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
|
&& echo "vscode ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
|
||||||
@ -64,7 +86,23 @@ USER vscode
|
|||||||
|
|
||||||
ENV LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
|
ENV LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
|
||||||
|
|
||||||
|
RUN sudo apt-get update && \
|
||||||
|
sudo apt-get install -y zsh && \
|
||||||
|
sudo apt-get clean && \
|
||||||
|
sudo rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
RUN sh -c "$(wget -O- https://github.com/deluan/zsh-in-docker/releases/download/v1.2.1/zsh-in-docker.sh)" -- \
|
RUN sh -c "$(wget -O- https://github.com/deluan/zsh-in-docker/releases/download/v1.2.1/zsh-in-docker.sh)" -- \
|
||||||
-t agnoster
|
-t agnoster \
|
||||||
|
-p zsh-syntax-highlighting
|
||||||
|
|
||||||
|
RUN zsh -c "git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting"
|
||||||
|
|
||||||
|
RUN zsh -c "git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf && ~/.fzf/install"
|
||||||
|
|
||||||
|
RUN mkdir -p /home/vscode/.config/gdb \
|
||||||
|
&& echo "set auto-load safe-path /" > /home/vscode/.config/gdb/gdbinit
|
||||||
|
|
||||||
|
ENV CMAKE_GENERATOR=Ninja
|
||||||
|
ENV CMAKE_EXPORT_COMPILE_COMMANDS=ON
|
||||||
|
|
||||||
WORKDIR /home/vscode
|
WORKDIR /home/vscode
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user