Repository navigation
Expand file tree
/
Copy pathDockerfile.custom
More file actions
executable file
·172 lines (152 loc) · 5.12 KB
/
Copy pathDockerfile.custom
File metadata and controls
executable file
·172 lines (152 loc) · 5.12 KB
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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
# Build the image:
# docker build -f Dockerfile.custom --build-arg BASE=resolute --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
ARG BASE=resolute
FROM ubuntu:${BASE}
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/ /usr/local/bin/
RUN ln -s \
/usr/local/bin/custom/install_boost.sh \
/usr/local/bin/custom/install_hdf5.sh \
/usr/local/bin/custom/install_petsc_hdf5.sh \
/usr/local/bin/custom/install_petsc.sh \
/usr/local/bin/custom/install_sundials.sh \
/usr/local/bin/custom/install_vtk.sh \
/usr/local/bin/custom/install_xercesc.sh \
/usr/local/bin/custom/install_xsd.sh \
/usr/local/bin/custom/setup_custom.sh \
/usr/local/bin/system/install_modulefiles.sh \
/usr/local/bin/system/setup_system.sh \
/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_hdf5.sh \
--version=${HDF5} \
--parallel=$(nproc) \
--modules-dir=${MODULES_DIR} && \
module test 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 hdf5 && \
install_petsc.sh \
--version=${PETSC} \
--arch=linux-gnu \
--parallel=$(nproc) \
--modules-dir=${MODULES_DIR} && \
module test petsc && \
rm -rf ${MODULES_DIR}/src/* && \
rm -rf /tmp/*
# TODO: This RUN section adds an additional petsc_hdf5 environment module which
# is a temporary workaround for backwards compatibility.
# It can be removed once a combined PETSc/HDF5 module is no longer needed.
# See https://github.com/Chaste/dependency-modules/issues/84
RUN source /etc/profile.d/modules.sh && \
module use ${MODULES_DIR}/modulefiles && \
install_petsc_hdf5.sh \
--petsc-version=${PETSC} \
--petsc-arch=linux-gnu \
--hdf5-version=${HDF5} \
--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 hdf5 && \
module load petsc && \
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 hdf5 && \
module load petsc && \
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"]