-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDockerfile
93 lines (78 loc) · 3.95 KB
/
Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# Based on Intel's intel/hpckit:devel-ubuntu22.04 container (https://hub.docker.com/r/intel/hpckit),
# but only installs Intel MPI.
#
# Copyright (c) 2020-2021 Intel Corporation.
# SPDX-License-Identifier: BSD-3-Clause
FROM ubuntu:22.04
MAINTAINER Tim Niklas Uhl <[email protected]>
RUN apt-get update && apt-get upgrade -y && \
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
curl ca-certificates gpg-agent software-properties-common && \
rm -rf /var/lib/apt/lists/*
# repository to install Intel(R) oneAPI Libraries
RUN curl -fsSL https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS-2023.PUB | gpg --dearmor | tee /usr/share/keyrings/intel-oneapi-archive-keyring.gpg
RUN echo "deb [signed-by=/usr/share/keyrings/intel-oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main " > /etc/apt/sources.list.d/oneAPI.list
RUN apt-get update && apt-get upgrade -y && \
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
curl ca-certificates gpg-agent software-properties-common && \
rm -rf /var/lib/apt/lists/*
RUN apt-get update && apt-get upgrade -y && \
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
ca-certificates build-essential pkg-config gnupg libarchive13 openssh-server openssh-client wget net-tools \
git \
libsparsehash-dev \
intel-oneapi-mpi intel-oneapi-mpi-devel intel-oneapi-tbb-devel && \
rm -rf /var/lib/apt/lists/*
ENV LANG=C.UTF-8
ENV VERSION=latest
ENV CLASSPATH="/opt/intel/oneapi/mpi/${VERSION}/share/java/mpi.jar"
ENV CMAKE_PREFIX_PATH="/opt/intel/oneapi/tbb/${VERSION}"
ENV CPATH="/opt/intel/oneapi/mpi/${VERSION}/include"
ENV CPATH="/opt/intel/oneapi/tbb/${VERSION}/include:${CPATH}"
ENV FI_PROVIDER_PATH="/opt/intel/oneapi/mpi/${VERSION}/opt/mpi/libfabric/lib/prov:/usr/lib/x86_64-linux-gnu/libfabric"
ENV I_MPI_ROOT="/opt/intel/oneapi/mpi/${VERSION}"
ENV LD_LIBRARY_PATH="/opt/intel/oneapi/mpi/${VERSION}/opt/mpi/libfabric/lib:/opt/intel/oneapi/mpi/${VERSION}/lib"
ENV LD_LIBRARY_PATH="/opt/intel/oneapi/tbb/${VERSION}/lib:${LD_LIBRARY_PATH}"
ENV LIBRARY_PATH="/opt/intel/oneapi/mpi/${VERSION}/lib"
ENV LIBRARY_PATH="/opt/intel/oneapi/tbb/${VERSION}/lib:${LIBRARY_PATH}"
ENV MANPATH="/opt/intel/oneapi/mpi/${VERSION}/share/man"
ENV ONEAPI_ROOT="/opt/intel/oneapi"
ENV PATH="/opt/intel/oneapi/mpi/${VERSION}/bin:${PATH}"
ENV PKG_CONFIG_PATH="/opt/intel/oneapi/mpi/${VERSION}/lib/pkgconfig:"
ENV PKG_CONFIG_PATH="/opt/intel/oneapi/tbb/${VERSION}/lib/pkgconfig:${PKG_CONFIG_PATH}"
ENV TBBROOT="/opt/intel/oneapi/tbb/${VERSION}"
ENV SETVARS_COMPLETED='1'
# KaMPIng specific dependencies
RUN apt update -y && apt upgrade -y && \
DEBIAN_FRONTEND=noninteractive apt install -y gcc-12 g++-12
# Install CMake
RUN wget https://cmake.org/files/v3.26/cmake-3.26.3-linux-x86_64.sh && \
sh cmake-3.26.3-linux-x86_64.sh --skip-license --prefix=/usr/local
# Install pyenv
RUN apt update -y && apt upgrade -y && \
DEBIAN_FRONTEND=noninteractive apt install -y pip && \
pip install pipenv
# Install dependencies for evaluation
ENV TZ="Europe/Berlin"
RUN apt update -y && apt upgrade -y && \
DEBIAN_FRONTEND=noninteractive apt install -y cloc gawk r-base texlive texlive-pictures jq && \
R -e "install.packages(c('plyr', 'dplyr'))"
# Install dependencies for RAxML-NG
RUN apt update -y && apt upgrade -y && \
DEBIAN_FRONTEND=noninteractive apt install -y flex bison libgmp3-dev
# Install some editors to make things simpler
RUN apt update -y && apt upgrade -y && \
DEBIAN_FRONTEND=noninteractive apt install -y vim nano tmux
# create a user `kamping`
ARG USERNAME=kamping
ARG USER_ID=1000
ARG USER_GID=$USER_ID
RUN groupadd --gid $USER_GID $USERNAME \
&& useradd --uid $USER_ID --gid $USER_ID -m $USERNAME \
&& apt update \
&& apt install -y sudo \
&& echo $USERNAME ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/$USERNAME \
&& chmod 0440 /etc/sudoers.d/$USERNAME
USER $USERNAME
WORKDIR /home/$USERNAME
VOLUME /repro-scripts