-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDockerfile.custom
executable file
·127 lines (110 loc) · 3.58 KB
/
Dockerfile.custom
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
# Build the image:
# docker build -f Dockerfile.custom --build-arg BOOST=1.74.0 ... -t chaste/runner:custom .
# Run the container in interactive mode:
# docker run --init -it -e RUNNER_OFF=1 chaste/runner:custom /bin/bash
# Run the container as a GitHub Actions runner:
# docker run --init -it chaste/runner:custom
FROM ubuntu:jammy
ARG BOOST
ARG HDF5
ARG PETSC
ARG SUNDIALS
ARG VTK
ARG XERCESC
ARG XSD
SHELL ["/bin/bash", "-e", "-o", "pipefail", "-c"]
USER root
ENV DEFAULT_USER="runner" \
DEFAULT_HOME="/home/runner" \
RUNNER_DIR="/home/runner/actions-runner" \
RUNNER_WORK_DIR="/home/runner/_work" \
MODULES_DIR="/home/runner/modules"
# Copy scripts
COPY scripts/*.sh scripts/custom/ /usr/local/bin/
# Setup base dependencies and install actions runner
RUN useradd -r -m -d ${DEFAULT_HOME} -s /bin/bash ${DEFAULT_USER} && \
setup_custom.sh && \
runner_install.sh --install_dir="/tmp/tmp-runner" && \
/tmp/tmp-runner/bin/installdependencies.sh && \
apt-get -y clean && \
rm -rf /var/cache/apt && \
rm -rf /var/lib/apt/lists/* && \
rm -rf /var/tmp/* && \
rm -rf /tmp/*
USER ${DEFAULT_USER}:${DEFAULT_USER}
WORKDIR ${DEFAULT_HOME}
# Build Chaste dependencies from source
RUN source /etc/profile.d/modules.sh && \
mkdir -p ${MODULES_DIR}/modulefiles && \
module use ${MODULES_DIR}/modulefiles && \
echo "module use ${MODULES_DIR}/modulefiles" >> ${DEFAULT_HOME}/.bashrc && \
install_boost.sh \
--version=${BOOST} \
--parallel=$(nproc) \
--modules-dir=${MODULES_DIR} && \
module test boost && \
rm -rf ${MODULES_DIR}/src/* && \
rm -rf /tmp/*
RUN source /etc/profile.d/modules.sh && \
module use ${MODULES_DIR}/modulefiles && \
module load boost && \
install_xercesc.sh \
--version=${XERCESC} \
--parallel=$(nproc) \
--modules-dir=${MODULES_DIR} && \
module test xercesc && \
rm -rf ${MODULES_DIR}/src/* && \
rm -rf /tmp/*
RUN source /etc/profile.d/modules.sh && \
module use ${MODULES_DIR}/modulefiles && \
module load boost && \
module load xercesc && \
install_xsd.sh \
--version=${XSD} \
--modules-dir=${MODULES_DIR} && \
module test xsd && \
rm -rf ${MODULES_DIR}/src/* && \
rm -rf /tmp/*
RUN source /etc/profile.d/modules.sh && \
module use ${MODULES_DIR}/modulefiles && \
module load boost && \
module load xercesc && \
module load xsd && \
install_petsc_hdf5.sh \
--petsc-version=${PETSC} \
--petsc-arch=linux-gnu \
--hdf5-version=${HDF5} \
--parallel=$(nproc) \
--modules-dir=${MODULES_DIR} && \
module test petsc_hdf5 && \
rm -rf ${MODULES_DIR}/src/* && \
rm -rf /tmp/*
RUN source /etc/profile.d/modules.sh && \
module use ${MODULES_DIR}/modulefiles && \
module load boost && \
module load xercesc && \
module load xsd && \
module load petsc_hdf5 && \
install_sundials.sh \
--version=${SUNDIALS} \
--parallel=$(nproc) \
--modules-dir=${MODULES_DIR} && \
module test sundials && \
rm -rf ${MODULES_DIR}/src/* && \
rm -rf /tmp/*
RUN source /etc/profile.d/modules.sh && \
module use ${MODULES_DIR}/modulefiles && \
module load boost && \
module load xercesc && \
module load xsd && \
module load petsc_hdf5 && \
module load sundials && \
install_vtk.sh \
--version=${VTK} \
--parallel=$(nproc) \
--modules-dir=${MODULES_DIR} && \
module test vtk && \
module load vtk && \
rm -rf ${MODULES_DIR}/src/* && \
rm -rf /tmp/*
ENTRYPOINT ["docker-entrypoint.sh"]