-
Notifications
You must be signed in to change notification settings - Fork 0
/
Dockerfile
224 lines (204 loc) · 6.68 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
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
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
ARG tag=bionic
FROM ubuntu:${tag}
# This first section from src/test/docker/bionic/Dockerfile in flux-core
# https://github.com/flux-framework/flux-core/blob/master/src/test/docker/bionic/Dockerfile
RUN apt-get update && \
apt-get -qq install -y --no-install-recommends \
apt-utils && \
rm -rf /var/lib/apt/lists/*
# Utilities
RUN apt-get update && \
apt-get -qq install -y --no-install-recommends \
locales \
ca-certificates \
wget \
man \
git \
flex \
ssh \
sudo \
vim \
luarocks \
munge \
lcov \
ccache \
lua5.2 \
mpich \
valgrind \
jq && \
rm -rf /var/lib/apt/lists/*
# Compilers, autotools
RUN apt-get update && \
apt-get -qq install -y --no-install-recommends \
build-essential \
pkg-config \
autotools-dev \
libtool \
autoconf \
automake \
make \
cmake \
clang-6.0 \
clang-tidy \
gcc-8 \
g++-8 && \
rm -rf /var/lib/apt/lists/*
# Python
# NOTE: sudo pip install is necessary to get differentiated installations of
# python binary components for multiple python3 variants, --ignore-installed
# makes it ignore local versions of the packages if your home directory is
# mapped into the container and contains the same libraries
RUN apt-get update && \
apt-get -qq install -y --no-install-recommends \
libffi-dev \
python3-dev \
python3.7-dev \
python3.8-dev \
python3-pip \
# These are needed for detection by system Python
python3-cffi \
python3-yaml \
python3-ply \
python3-six \
python3-jsonschema \
python3-setuptools \
python3-wheel && \
rm -rf /var/lib/apt/lists/*
RUN for PY in python3.6 python3.7 python3.8 ; do \
sudo $PY -m pip install --upgrade --ignore-installed \
"markupsafe==2.0.0" \
coverage cffi ply six pyyaml "jsonschema>=2.6,<4.0" \
sphinx sphinx-rtd-theme sphinxcontrib-spelling; \
sudo mkdir -p /usr/lib/${PY}/dist-packages; \
echo ../site-packages >/tmp/site-packages.pth; \
sudo mv /tmp/site-packages.pth /usr/lib/${PY}/dist-packages; \
done ; \
apt-get -qq purge -y python3-pip && \
apt-get -qq autoremove -y
# Other deps
RUN apt-get update && \
apt-get -qq install -y --no-install-recommends \
libsodium-dev \
libzmq3-dev \
libczmq-dev \
libjansson-dev \
libmunge-dev \
libncursesw5-dev \
liblua5.2-dev \
liblz4-dev \
libsqlite3-dev \
uuid-dev \
libhwloc-dev \
libmpich-dev \
libs3-dev \
libevent-dev \
libarchive-dev \
libpam-dev && \
rm -rf /var/lib/apt/lists/*
# Testing utils and libs
RUN apt-get update && \
apt-get -qq install -y --no-install-recommends \
faketime \
libfaketime \
pylint \
cppcheck \
enchant \
aspell \
aspell-en && \
rm -rf /var/lib/apt/lists/*
RUN locale-gen en_US.UTF-8
# NOTE: luaposix installed by rocks due to Ubuntu bug: #1752082 https://bugs.launchpad.net/ubuntu/+source/lua-posix/+bug/1752082
RUN luarocks install luaposix
# Install openpmix, prrte
WORKDIR /opt/prrte
RUN git clone https://github.com/openpmix/openpmix.git && \
git clone https://github.com/openpmix/prrte.git && \
ls -l && \
set -x && \
cd openpmix && \
git checkout fefaed568f33bf86f28afb6e45237f1ec5e4de93 && \
./autogen.pl && \
./configure --prefix=/usr --disable-static && make -j 4 install && \
ldconfig && \
cd .. && \
cd prrte && \
git checkout 477894f4720d822b15cab56eee7665107832921c && \
./autogen.pl && \
./configure --prefix=/usr && make -j 4 install && \
cd ../.. && \
rm -rf prrte
ENV LANG=C.UTF-8
# This is from the docker check script (run interactively during a test)
# https://github.com/flux-framework/flux-core/blob/master/src/test/docker/checks/Dockerfile
ARG USER=fluxuser
ARG UID=1000
ARG GID=1000
ARG FLUX_SECURITY_VERSION=0.9.0
# Install flux-security by hand for now:
#
WORKDIR /opt
RUN CCACHE_DISABLE=1 && \
V=$FLUX_SECURITY_VERSION && \
PKG=flux-security-$V && \
URL=https://github.com/flux-framework/flux-security/releases/download && \
wget ${URL}/v${V}/${PKG}.tar.gz && \
tar xvfz ${PKG}.tar.gz && \
cd ${PKG} && \
./configure --prefix=/usr --sysconfdir=/etc && \
make -j 4 && \
sudo make install && \
cd .. && \
ldconfig
# Add configured user to image with sudo access:
#
RUN set -x && groupadd -g $UID $USER && \
useradd -g $USER -u $UID -d /home/$USER -m $USER && \
printf "$USER ALL= NOPASSWD: ALL\\n" >> /etc/sudoers
# Setup MUNGE directories & key
RUN mkdir -p /var/run/munge && \
dd if=/dev/urandom bs=1 count=1024 > /etc/munge/munge.key && \
chown -R munge /etc/munge/munge.key /var/run/munge && \
chmod 600 /etc/munge/munge.key
# Build flux core
# This I added and copied how to build with caliper / flux security enabled
# https://github.com/flux-framework/flux-core/blob/master/src/test/docker/docker-run-checks.sh#L185-L191
RUN git clone https://github.com/flux-framework/flux-core && \
cd flux-core && \
./autogen.sh && \
./configure --prefix=/usr --sysconfdir=/etc \
--with-systemdsystemunitdir=/etc/systemd/system \
--localstatedir=/var \
--with-flux-security && \
make clean && \
make && \
sudo make install
# This is from the same src/test/docker/bionic/Dockerfile but in flux-sched
# Flux-sched deps
RUN sudo apt-get update
RUN sudo apt-get -qq install -y --no-install-recommends \
libboost-graph-dev \
libboost-system-dev \
libboost-filesystem-dev \
libboost-regex-dev \
python-yaml \
libyaml-cpp-dev \
libedit-dev
# Build Flux Sched
# https://github.com/flux-framework/flux-sched/blob/master/src/test/docker/docker-run-checks.sh#L152-L158
RUN git clone --depth 1 https://github.com/flux-framework/flux-sched && \
cd flux-sched && \
./autogen.sh && \
./configure --prefix=/usr --sysconfdir=/etc \
--with-systemdsystemunitdir=/etc/systemd/system \
--localstatedir=/var \
--with-flux-security && \
make && \
sudo make install
# Note I ran this manually - didn't check to see if works in build (4th line might be interactive
RUN sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 1 && \
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 2 && \
sudo update-alternatives --config python3 && \
wget https://bootstrap.pypa.io/get-pip.py && \
python3 get-pip.py
# Working directory to be flux so we can pull / update from there
WORKDIR /opt/flux-core