-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDockerfile.custom
More file actions
executable file
·157 lines (138 loc) · 4.57 KB
/
Dockerfile.custom
File metadata and controls
executable file
·157 lines (138 loc) · 4.57 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
# 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/custom/ scripts/*.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"]