@@ -15,6 +15,7 @@ ARG NEO4J_PASS=""
15
15
ARG NEO4J_ENDPOINT=""
16
16
ARG AWS_API_PORT=9000
17
17
ARG AWS_CONSOLE_PORT=9001
18
+ ARG USE_K8S="OFF"
18
19
19
20
ENV DEBIAN_FRONTEND=noninteractive
20
21
ENV DEBCONF_NOWARNINGS="yes"
@@ -32,6 +33,12 @@ ENV NEO4J_ENDPOINT="${NEO4J_ENDPOINT}"
32
33
ENV AWS_API_PORT="${AWS_API_PORT}"
33
34
ENV AWS_CONSOLE_PORT="${AWS_CONSOLE_PORT}"
34
35
36
+ # Convert ARG value to uppercase and set ENV
37
+ # hadolint ignore=SC3059
38
+ RUN export USE_K8S=$(echo "${USE_K8S^^}") && \
39
+ echo "export USE_K8S=${USE_K8S}" >> /etc/profile.d/envvars.sh
40
+ ENV USE_K8S="${USE_K8S}"
41
+
35
42
############################################################
36
43
# BUILD DEPENDENCIES
37
44
FROM base AS build
@@ -41,15 +48,15 @@ FROM base AS build
41
48
RUN apt-get update -y && apt-get upgrade -y && \
42
49
apt-get install -o 'Acquire::Retries=3' -y --no-install-suggests \
43
50
--no-install-recommends --fix-broken --fix-missing \
44
- apt-transport-https automake bison build-essential bzip2 ca-certificates \
51
+ apt-transport-https automake bazel-bootstrap bison build-essential bzip2 ca-certificates \
45
52
cppzmq-dev curl ed flex g++ gcc git gnupg-agent javacc libarchive-tools libatlas-base-dev \
46
- libavcodec-dev libavformat-dev libavutil-dev libboost-all-dev libbz2-dev libc-ares-dev \
53
+ libavcodec-dev libavformat-dev libavutil-dev libbison-dev libboost-all-dev libbz2-dev libc-ares-dev \
47
54
libcurl4-openssl-dev libdc1394-dev libgflags-dev libgoogle-glog-dev \
48
55
libgtk-3-dev libgtk2.0-dev libhdf5-dev libjpeg-dev libjpeg62-turbo-dev libjsoncpp-dev \
49
56
libleveldb-dev liblmdb-dev liblz4-dev libncurses5-dev libopenblas-dev libopenmpi-dev \
50
57
libpng-dev librdkafka-dev libsnappy-dev libssl-dev libswscale-dev libtbb-dev libtbbmalloc2 \
51
- libtiff-dev libtiff5-dev libtool linux-libc-dev mpich openjdk-17-jdk-headless \
52
- pkg-config procps software-properties-common swig unzip uuid-dev && \
58
+ libtiff-dev libtiff5-dev libtool libwebsockets-dev linux-libc-dev mpich openjdk-17-jdk-headless \
59
+ pkg-config procps software-properties-common swig uncrustify unzip uuid-dev && \
53
60
apt-get --purge remove -y python3.11 && apt-get autoremove -y && \
54
61
apt-get clean && rm -rf /var/lib/apt/lists/*
55
62
@@ -69,7 +76,7 @@ WORKDIR /dependencies
69
76
ENV AUTOCONF_VERSION="2.71" \
70
77
AWS_SDK_VERSION="1.11.336" \
71
78
CMAKE_VERSION="v3.28.5" \
72
- FAISS_VERSION="v1.7.4 " \
79
+ FAISS_VERSION="v1.9.0 " \
73
80
LIBEDIT_VERSION="20230828-3.1" \
74
81
OPENCV_VERSION="4.9.0" \
75
82
PEG_VERSION="0.1.19" \
@@ -163,6 +170,31 @@ RUN curl -L -O https://github.com/gpakosz/peg/releases/download/${PEG_VERSION}/p
163
170
./configure --disable-werror --prefix=/opt/dist/usr && \
164
171
make clean check && make install -w --debug
165
172
173
+ # FOR KUBERNETES ORCHESTRATION
174
+ # hadolint ignore=DL3003,SC2086
175
+ RUN if [ "${USE_K8S}" = "ON" ]; then \
176
+ git clone --depth 1 https://github.com/yaml/libyaml.git /dependencies/libyaml && \
177
+ cd /dependencies/libyaml && \
178
+ mkdir build && \
179
+ cd build && \
180
+ cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DBUILD_TESTING=OFF -DBUILD_SHARED_LIBS=ON .. && \
181
+ make ${BUILD_THREADS} && \
182
+ make install; \
183
+ fi
184
+
185
+ # hadolint ignore=DL3003,SC2086
186
+ RUN if [ "${USE_K8S}" = "ON" ]; then \
187
+ git clone https://github.com/kubernetes-client/c.git /dependencies/k8s && \
188
+ ls /dependencies/k8s && \
189
+ CLIENT_REPO_ROOT=/dependencies/k8s && \
190
+ cd ${CLIENT_REPO_ROOT}/kubernetes && \
191
+ mkdir build && \
192
+ cd build && \
193
+ cmake -DCMAKE_PREFIX_PATH=/usr/local -DCMAKE_INSTALL_PREFIX=/usr/local .. && \
194
+ make ${BUILD_THREADS} && \
195
+ make install; \
196
+ fi
197
+
166
198
# CLEANUP
167
199
RUN rm -rf /dependencies /usr/local/share/doc /usr/local/share/man && \
168
200
mkdir -p /opt/dist/usr/include/x86_64-linux-gnu && \
@@ -172,7 +204,12 @@ RUN rm -rf /dependencies /usr/local/share/doc /usr/local/share/man && \
172
204
############################################################
173
205
# FINAL IMAGE
174
206
FROM base
175
- ARG BUILD_COVERAGE="on"
207
+ ARG BUILD_COVERAGE="ON"
208
+
209
+ # Convert ARG value to uppercase and set ENV
210
+ # hadolint ignore=SC3059
211
+ RUN export BUILD_COVERAGE=$(echo "${BUILD_COVERAGE^^}") && \
212
+ echo "export BUILD_COVERAGE=${BUILD_COVERAGE}" >> /etc/profile.d/envvars.sh
176
213
ENV BUILD_COVERAGE="${BUILD_COVERAGE}"
177
214
178
215
# COPY FILES
@@ -183,38 +220,46 @@ COPY client /vdms/client
183
220
COPY distributed /vdms/distributed
184
221
COPY include /vdms/include
185
222
COPY remote_function /vdms/remote_function
223
+ COPY resources /vdms/resources
186
224
COPY src /vdms/src
187
225
COPY tests /vdms/tests
188
226
COPY user_defined_operations /vdms/user_defined_operations
189
227
COPY utils /vdms/utils
190
228
COPY CMakeLists.txt /vdms/CMakeLists.txt
191
229
COPY config-vdms.json /vdms/config-vdms.json
230
+ COPY kubernetes/global_vdms_setup_script.sh /vdms/kubernetes/global_vdms_setup_script.sh
231
+ COPY kubernetes/kubeConfig.json /vdms/kubernetes/kubeConfig.json
192
232
COPY docker/override_default_config.py /vdms/override_default_config.py
193
233
COPY --from=build /opt/dist /
194
234
COPY --from=build /usr/local/bin/python${PYTHON_BASE} /usr/local/bin/python${PYTHON_BASE}
195
235
COPY --from=build /usr/local/lib/python${PYTHON_BASE} /usr/local/lib/python${PYTHON_BASE}
196
236
COPY --from=build ${VIRTUAL_ENV} ${VIRTUAL_ENV}
237
+ COPY --from=build /usr/local/include/kubernete[s] /usr/local/include/kubernetes
238
+ COPY --from=build /usr/include/libwebsocket[s] /usr/include/libwebsockets
239
+ COPY --from=build /usr/local/lib/libkubernetes.s[o] /usr/local/lib/libkubernetes.so
240
+ COPY --from=build /usr/local/lib/libyaml.s[o] /usr/local/lib/libyaml.so
241
+ COPY --from=build /usr/lib/x86_64-linux-gnu/libwebsockets.s[o] /usr/lib/x86_64-linux-gnu/libwebsockets.so
197
242
ENV PATH="$VIRTUAL_ENV/bin:$PATH"
198
243
199
244
# hadolint ignore=DL3008,SC2086
200
245
RUN apt-get update -y && apt-get upgrade -y && \
201
246
apt-get install -o 'Acquire::Retries=3' -y --no-install-suggests \
202
247
--no-install-recommends --fix-broken --fix-missing \
203
- build-essential bzip2 cppzmq-dev curl g++ gcc git javacc libarchive-tools libavcodec-dev \
248
+ build-essential bzip2 cppzmq-dev curl g++ gcc git javacc libarchive-tools libavcodec-dev bazel-bootstrap \
204
249
libavformat-dev libcurl4-openssl-dev libdc1394-dev libgoogle-glog-dev libgtk-3-dev \
205
250
libhdf5-dev libjpeg62-turbo-dev libjsoncpp-dev libopenblas-dev libpng-dev librdkafka-dev \
206
- libssl-dev libswscale-dev libtbb-dev libtbbmalloc2 libtiff5-dev libzip -dev openjdk-17-jdk-headless \
207
- procps && \
251
+ libssl-dev libswscale-dev libtbb-dev libtbbmalloc2 libtiff5-dev libwebsockets -dev libzip-dev \
252
+ openjdk-17-jdk-headless procps uncrustify && \
208
253
apt-get --purge remove -y python3.11 && apt-get autoremove -y && \
209
254
apt-get clean && rm -rf /var/lib/apt/lists/* && \
210
255
echo "/usr/local/lib" >> /etc/ld.so.conf.d/all-libs.conf && ldconfig && \
211
256
python3 -m pip install --no-cache-dir "numpy>=${NUMPY_MIN_VERSION},<2.0.0" "protobuf==4.${PROTOBUF_VERSION}" \
212
- "coverage>=7.3.1" "cryptography>=42 .0.7 "
257
+ "coverage>=7.3.1" "cryptography>=44 .0.1 "
213
258
214
259
# COVERAGE TESTING
215
260
WORKDIR /vdms
216
261
# hadolint ignore=DL3008,SC2086
217
- RUN if [ "${BUILD_COVERAGE}" = "on " ]; then \
262
+ RUN if [ "${BUILD_COVERAGE}" = "ON " ]; then \
218
263
apt-get update -y ; \
219
264
apt-get install -y --no-install-suggests --no-install-recommends gdb ; \
220
265
apt-get clean ; \
@@ -239,11 +284,12 @@ RUN git submodule update --init --recursive && \
239
284
sed -i "s|#include <stdio.h>|#include <stdio.h>\n#include <stdexcept>|" /vdms/src/pmgd/test/neighbortest.cc && \
240
285
sed -i "s|#include <stdio.h>|#include <stdio.h>\n#include <stdexcept>|" /vdms/src/pmgd/tools/mkgraph.cc && \
241
286
mkdir -p /vdms/build && cd /vdms/build && \
242
- cmake -DCODE_COVERAGE="${BUILD_COVERAGE}" .. && make ${BUILD_THREADS} && \
287
+ cmake -DUSE_K8S="${USE_K8S}" - DCODE_COVERAGE="${BUILD_COVERAGE}" .. && make ${BUILD_THREADS} VERBOSE=1 && \
243
288
echo '#!/bin/bash' > /start.sh && echo 'cd /vdms/build' >> /start.sh && \
244
- echo 'python /vdms/override_default_config.py -i /vdms/config-vdms.json -o /vdms/build/config-vdms.json' >> /start.sh && \
289
+ echo 'python3 /vdms/override_default_config.py -i /vdms/config-vdms.json -o /vdms/build/config-vdms.json' >> /start.sh && \
245
290
echo './vdms' >> /start.sh && chmod 755 /start.sh
246
291
247
- ENV PYTHONPATH=/vdms/client/python:${PYTHONPATH}
292
+ ENV PYTHONPATH=/vdms/client/python
293
+
248
294
HEALTHCHECK CMD echo "This is a healthcheck test." || exit 1
249
295
CMD ["/start.sh"]
0 commit comments