@@ -87,10 +87,11 @@ RUN git clone --recurse-submodules --depth 1 --branch v2.10.16 https://github.co
8787 patch -d /azure/azure-storage-cpp/ -p1 </ovms/third_party/azure/azure_sdk.patch
8888
8989WORKDIR /azure/cpprestsdk/Release/build.release
90- RUN cmake .. -DCMAKE_VERBOSE_MAKEFILE=${VERBOSE_LOGS} -DCMAKE_CXX_FLAGS="-fPIC ${LTO_CXX_FLAGS}" -DCMAKE_SHARED_LINKER_FLAGS="${LTO_LD_FLAGS}" -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DBoost_USE_STATIC_RUNTIME=ON -DBoost_USE_STATIC_LIBS=ON -DWERROR=OFF -DBUILD_SAMPLES=OFF -DBUILD_TESTS=OFF && make --jobs=$JOBS install
90+ ARG SDL_OPS="-fpic -O2 -U_FORTIFY_SOURCE -fstack-protector -fno-omit-frame-pointer -D_FORTIFY_SOURCE=1 -fno-strict-overflow -Wall -Wno-unknown-pragmas -Wno-error=sign-compare -fno-delete-null-pointer-checks -fwrapv -fstack-clash-protection -Wformat -Wformat-security -Werror=format-security"
91+ RUN cmake .. -DCMAKE_VERBOSE_MAKEFILE=${VERBOSE_LOGS} -DCMAKE_CXX_FLAGS="${SDL_OPS} ${LTO_CXX_FLAGS}" -DCMAKE_SHARED_LINKER_FLAGS="${LTO_LD_FLAGS}" -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DBoost_USE_STATIC_RUNTIME=ON -DBoost_USE_STATIC_LIBS=ON -DWERROR=OFF -DBUILD_SAMPLES=OFF -DBUILD_TESTS=OFF && make --jobs=$JOBS install
9192
9293WORKDIR /azure/azure-storage-cpp/Microsoft.WindowsAzure.Storage/build.release
93- RUN CASABLANCA_DIR=/azure/cpprestsdk cmake .. -DCMAKE_CXX_FLAGS="-fPIC ${LTO_CXX_FLAGS}" -DCMAKE_SHARED_LINKER_FLAGS="${LTO_LD_FLAGS}" -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DBoost_USE_STATIC_RUNTIME=ON -DBoost_USE_STATIC_LIBS=ON -DCMAKE_VERBOSE_MAKEFILE=${VERBOSE_LOGS} && make --jobs=$JOBS && make --jobs=$JOBS install
94+ RUN CASABLANCA_DIR=/azure/cpprestsdk cmake .. -DCMAKE_CXX_FLAGS="${SDL_OPS} ${LTO_CXX_FLAGS}" -DCMAKE_SHARED_LINKER_FLAGS="${LTO_LD_FLAGS}" -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DBoost_USE_STATIC_RUNTIME=ON -DBoost_USE_STATIC_LIBS=ON -DCMAKE_VERBOSE_MAKEFILE=${VERBOSE_LOGS} && make --jobs=$JOBS && make --jobs=$JOBS install
9495####### End of Azure SDK
9596
9697####### Build OpenCV
@@ -110,8 +111,7 @@ ARG VERBOSE_LOGS=OFF
110111ARG LTO_ENABLE=OFF
111112
112113# hadolint ignore=DL3041
113- RUN dnf install -d6 -y \
114- https://vault.centos.org/centos/8-stream/PowerTools/x86_64/os/Packages/opencl-headers-2.2-1.20180306gite986688.el8.noarch.rpm \
114+ RUN dnf install -d6 -y https://vault.centos.org/centos/8-stream/PowerTools/x86_64/os/Packages/opencl-headers-2.2-1.20180306gite986688.el8.noarch.rpm \
115115 gdb \
116116 java-11-openjdk-devel \
117117 tzdata-java \
@@ -131,7 +131,7 @@ WORKDIR /
131131
132132RUN python3 --version && python3 -m pip install numpy==1.21.0 --no-cache-dir
133133
134- # INSTALL_DRIVER_VERSION="24.52.32224"
134+ ARG INSTALL_DRIVER_VERSION="24.52.32224"
135135# GPU testing in build img & remote tensors dependencies
136136WORKDIR /usr/lib64/
137137RUN ln -s libOpenCL.so.1 libOpenCL.so
@@ -140,7 +140,7 @@ COPY ./install_redhat_gpu_drivers.sh ./install_gpu_drivers.sh
140140# hadolint ignore=SC1091
141141RUN wget -q https://mirror.stream.centos.org/9-stream/AppStream/x86_64/os/Packages/libva-devel-2.22.0-1.el9.x86_64.rpm && \
142142 rpm -ivh --nodeps ./libva-devel-2.22.0-1.el9.x86_64.rpm && \
143- if [ -f /usr/bin/dnf ] ; then export DNF_TOOL=dnf ; echo -e "max_parallel_downloads=8\nretries=50" >> /etc/dnf/dnf.conf ; else export DNF_TOOL=microdnf ; fi ; INSTALL_DRIVER_VERSION="24.52.32224" source ./install_gpu_drivers.sh && \
143+ if [ -f /usr/bin/dnf ] ; then export DNF_TOOL=dnf ; echo -e "max_parallel_downloads=8\nretries=50" >> /etc/dnf/dnf.conf ; else export DNF_TOOL=microdnf ; fi ; source ./install_gpu_drivers.sh && \
144144 groupadd --gid 5000 ovms && groupadd --gid 44 video1 && \
145145 useradd --home-dir /home/ovms --create-home --uid 5000 --gid 5000 --groups 39,44 --shell /bin/bash --skel /dev/null ovms
146146RUN python3 --version && python3 -m pip install "numpy<2.0.0" --no-cache-dir && \
@@ -160,9 +160,7 @@ RUN dnf install -y https://github.com/linux-test-project/lcov/releases/download
160160ENV TF_SYSTEM_LIBS="curl"
161161ENV TEST_LOG="/root/.cache/bazel/_bazel_root/bc57d4817a53cab8c785464da57d1983/execroot/ovms/bazel-out/test.log"
162162ARG ov_source_branch=c01cd93e24d1cd78bfbb401eed51c08fb93e0816
163- ARG ov_contrib_branch=master
164163ARG ov_source_org=openvinotoolkit
165- ARG ov_contrib_org=openvinotoolkit
166164ARG ov_use_binary=0
167165ARG DLDT_PACKAGE_URL
168166ARG TEMP_DIR=/tmp/openvino_installer
@@ -177,10 +175,14 @@ RUN dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.n
177175RUN if [ "$ov_use_binary" == "0" ] ; then true ; else exit 0 ; fi ; git clone https://github.com/$ov_source_org/openvino.git /openvino && cd /openvino && git checkout $ov_source_branch && git submodule update --init --recursive
178176RUN if [ "$ov_use_binary" == "0" ]; then true ; else exit 0 ; fi ; if ! [[ $debug_bazel_flags == *"py_off"* ]]; then true ; else exit 0 ; fi ; pip3 install --no-cache-dir -r /openvino/src/bindings/python/wheel/requirements-dev.txt
179177WORKDIR /openvino/build
180- RUN if [ "$ov_use_binary" == "0" ] && [[ $debug_bazel_flags == *"PYTHON_DISABLE=1"* ]]; then true ; else exit 0 ; fi ; if ! [[ $debug_bazel_flags == *"PYTHON_DISABLE=1"* ]]; then true ; else exit 0 ; fi ; cmake -DCMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE -DCMAKE_VERBOSE_MAKEFILE="${VERBOSE_LOGS}" -DENABLE_LTO=${LTO_ENABLE} -DENABLE_PYTHON=ON -DENABLE_INTEL_NPU=OFF -DENABLE_SAMPLES=0 -DCMAKE_CXX_FLAGS=" -Wno-error=parentheses ${LTO_CXX_FLAGS} " -DCMAKE_SHARED_LINKER_FLAGS="${LTO_LD_FLAGS}" ..
181- RUN if [ "$ov_use_binary" == "0" ] ; then true ; else exit 0 ; fi ; cmake -DCMAKE_BUILD_TYPE="$CMAKE_BUILD_TYPE" -DCMAKE_VERBOSE_MAKEFILE="${VERBOSE_LOGS}" -DENABLE_LTO=${LTO_ENABLE} -DENABLE_SAMPLES=0 -DENABLE_INTEL_NPU=OFF -DCMAKE_CXX_FLAGS=" -Wno-error=parentheses ${LTO_CXX_FLAGS} " -DCMAKE_SHARED_LINKER_FLAGS="${LTO_LD_FLAGS}" ..
182- RUN if [ "$ov_use_binary" == "0" ] ; then true ; else exit 0 ; fi ; make --jobs=$JOBS
183- RUN if [ "$ov_use_binary" == "0" ] ; then true ; else exit 0 ; fi ; make install
178+ RUN if [ "$ov_use_binary" == "0" ]; then true ; else exit 0 ; fi ; \
179+ if ! [[ $debug_bazel_flags == *"py_off"* ]]; then \
180+ cmake -DCMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE -DCMAKE_VERBOSE_MAKEFILE="${VERBOSE_LOGS}" -DENABLE_LTO=${LTO_ENABLE} -DENABLE_PYTHON=ON -DENABLE_SAMPLES=0 -DENABLE_INTEL_NPU=OFF -DCMAKE_CXX_FLAGS=" -Wno-error=parentheses ${LTO_CXX_FLAGS} " -DCMAKE_SHARED_LINKER_FLAGS="${LTO_LD_FLAGS}" .. ; \
181+ else \
182+ cmake -DCMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE -DCMAKE_VERBOSE_MAKEFILE="${VERBOSE_LOGS}" -DENABLE_LTO=${LTO_ENABLE} -DENABLE_SAMPLES=0 -DENABLE_INTEL_NPU=OFF -DCMAKE_CXX_FLAGS=" -Wno-error=parentheses ${LTO_CXX_FLAGS} " -DCMAKE_SHARED_LINKER_FLAGS="${LTO_LD_FLAGS}" .. ; \
183+ fi && \
184+ make --jobs=$JOBS && \
185+ make install
184186RUN if [ "$ov_use_binary" == "0" ] ; then true ; else exit 0 ; fi ; \
185187 mkdir -p /opt/intel/openvino/extras && \
186188 mkdir -p /opt/intel/openvino && \
@@ -198,9 +200,9 @@ WORKDIR $TEMP_DIR
198200RUN if [ "$ov_use_binary" = "1" ] && [ "$DLDT_PACKAGE_URL" != "" ]; then true ; else exit 0 ; fi ; \
199201 wget -nv $DLDT_PACKAGE_URL && \
200202 mkdir /opt/intel && \
201- tar -zxf ./*openvino_toolkit*.tgz -C /opt/intel && \
202- ln -s /opt/intel/*openvino_toolkit * /opt/intel/openvino && \
203- ln -s /opt/intel/*openvino_toolkit * /opt/intel/openvino_2025
203+ tar -zxf ./*openvino_genai*.tar.gz -C /opt/intel && \
204+ ln -s /opt/intel/*openvino_genai * /opt/intel/openvino && \
205+ ln -s /opt/intel/*openvino_genai * /opt/intel/openvino_2025
204206
205207# install sample apps including benchmark_app
206208# hadolint ignore=DL3041
@@ -214,22 +216,35 @@ ENV OpenVINO_DIR=/opt/intel/openvino/runtime/cmake
214216ENV OPENVINO_TOKENIZERS_PATH_GENAI=/opt/intel/openvino/runtime/lib/intel64/libopenvino_tokenizers.so
215217ENV LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/opt/intel/openvino/runtime/lib/intel64/:/opt/opencv/lib/:/opt/intel/openvino/runtime/3rdparty/tbb/lib/
216218
219+ WORKDIR /openvino_tokenizers/
217220ARG ov_tokenizers_branch=85be884a69f10270703f81f970a5ee596a4c8df7
221+ ARG ov_tokenizers_org=openvinotoolkit
222+ ARG SDL_OPS="-fpic -O2 -U_FORTIFY_SOURCE -fstack-protector -fno-omit-frame-pointer -D_FORTIFY_SOURCE=1 -fno-strict-overflow -Wall -Wno-unknown-pragmas -Wno-error=sign-compare -fno-delete-null-pointer-checks -fwrapv -fstack-clash-protection -Wformat -Wformat-security -Werror=format-security -s -D_GLIBCXX_USE_CXX11_ABI=1 -Wno-error=deprecated-declarations -Wuninitialized"
223+
218224# hadolint ignore=DL3003
219- RUN git clone https://github.com/openvinotoolkit/openvino_tokenizers.git /openvino_tokenizers && cd /openvino_tokenizers && git checkout $ov_tokenizers_branch && git submodule update --init --recursive
220- WORKDIR /openvino_tokenizers/build
221- RUN cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_VERBOSE_MAKEFILE="${VERBOSE_LOGS}" -DCMAKE_CXX_FLAGS=" ${LTO_CXX_FLAGS} " -DCMAKE_SHARED_LINKER_FLAGS="${LTO_LD_FLAGS}" && cmake --build . --parallel $JOBS ; cp /openvino_tokenizers/build/src/lib*.so /opt/intel/openvino/runtime/lib/intel64/
222225
223- WORKDIR /openvino_tokenizers/
224- # Install the openvino_tokenizers python bindings and use a symlink to point
225- # to the shared object in it's final location.
226- RUN if ! [[ $debug_bazel_flags == *"_py_off"* ]]; then \
227- mkdir -p /opt/intel/openvino/python/openvino_tokenizers/lib ; \
228- cp -r python/* /opt/intel/openvino/python/ ; \
229- cp build/python/* /opt/intel/openvino/python/openvino_tokenizers/ ; \
230- mkdir -p /opt/intel/openvino/python/openvino_tokenizers-2025.3.dist-info ; \
231- echo $'Metadata-Version: 1.0\nName: openvino-tokenizers\nVersion: 2025.3\nRequires-Python: >=3.9\nRequires-Dist: openvino~=2025.3.0' > /opt/intel/openvino/python/openvino_tokenizers-2025.3.dist-info/METADATA ; \
232- ln -s /ovms/lib/libopenvino_tokenizers.so /opt/intel/openvino/python/openvino_tokenizers/lib/libopenvino_tokenizers.so ; fi
226+ RUN if ! [[ $debug_bazel_flags == *"_py_off"* ]]; then \
227+ # python tokenizers built always from source because it is not in binary package
228+ git clone https://github.com/$ov_tokenizers_org/openvino_tokenizers.git /openvino_tokenizers && cd /openvino_tokenizers && git checkout 85be884a69f10270703f81f970a5ee596a4c8df7 && git submodule update --init --recursive && \
229+ sed -i '/openvino~=/d' /openvino_tokenizers/pyproject.toml && \
230+ sed -i '/requires-python/d' /openvino_tokenizers/pyproject.toml && \
231+ cd /openvino_tokenizers && cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_VERBOSE_MAKEFILE="${VERBOSE_LOGS}" -DCMAKE_CXX_FLAGS=" ${SDL_OPS} ${LTO_CXX_FLAGS} " -DCMAKE_SHARED_LINKER_FLAGS="${LTO_LD_FLAGS}" -S ./ -B ./build/ && cmake --build ./build/ --parallel $JOBS && cp /openvino_tokenizers/build/src/lib*.so /opt/intel/openvino/runtime/lib/intel64/ && \
232+ python3 -m pip wheel -v --no-deps --wheel-dir wheel /openvino_tokenizers && \
233+ python3 -m pip install --no-cache-dir "$(find wheel -name 'openvino_tokenizers*.whl')" --target /opt/intel/openvino/python ; \
234+ fi
235+
236+ WORKDIR /openvino_genai/
237+ ARG ov_genai_branch=master
238+ ARG ov_genai_org=openvinotoolkit
239+ # hadolint ignore=DL3003
240+ RUN if [ "$ov_use_binary" == "0" ]; then true ; else exit 0 ; fi ; \
241+ git clone https://github.com/$ov_genai_org/openvino.genai /openvino_genai && cd /openvino_genai && git checkout aae98de0cd99303e989c36392bf01026f9fd8000 && git submodule update --init --recursive ; \
242+ cmake -DCMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE -DCMAKE_CXX_FLAGS=" ${SDL_OPS} ${LTO_CXX_FLAGS} " -DCMAKE_SHARED_LINKER_FLAGS="${LTO_LD_FLAGS}" -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DENABLE_SYSTEM_ICU="True" -DBUILD_TOKENIZERS=OFF -DENABLE_SAMPLES=OFF -DENABLE_TOOLS=OFF -DENABLE_TESTS=OFF -DENABLE_XGRAMMAR=ON -S ./ -B ./build/ ; \
243+ cmake --build ./build/ --parallel $JOBS && cp /openvino_genai/build/openvino_genai/lib*.so* /opt/intel/openvino/runtime/lib/intel64/ ; \
244+ cp -r /openvino_genai/src/cpp/include/* /opt/intel/openvino/runtime/include/ ; \
245+ if ! [[ $debug_bazel_flags == *"_py_off"* ]]; then \
246+ cp -r /openvino_genai/build/openvino_genai/*py* /opt/intel/openvino/python/ ; \
247+ fi
233248
234249# Build OpenVINO Model Server
235250WORKDIR /ovms
@@ -268,13 +283,19 @@ WORKDIR /ovms/src/example/SampleCpuExtension/
268283RUN make
269284
270285RUN if ! [[ $debug_bazel_flags == *"py_off"* ]]; then true ; else exit 0 ; fi ; \
271- mkdir -p /opt/intel/openvino/python/openvino-2025.3 .dist-info && \
272- echo $'Metadata-Version: 1.0\nName: openvino\nVersion: 2025.3 ' > /opt/intel/openvino/python/openvino-2025.3 .dist-info/METADATA
286+ mkdir -p /opt/intel/openvino/python/openvino-4 .dist-info && \
287+ echo $'Metadata-Version: 1.0\nName: openvino\nVersion: 2025.4.1 ' > /opt/intel/openvino/python/openvino-4 .dist-info/METADATA
273288ENV PYTHONPATH=/opt/intel/openvino/python:/ovms/bazel-bin/src/python/binding
274289
290+ WORKDIR /patchelf
291+ # hadolint ignore=DL3003
292+ RUN wget -q https://github.com/NixOS/patchelf/archive/0.10.tar.gz && \
293+ tar -xf 0.10.tar.gz && cd patchelf-0.10 && \
294+ ./bootstrap.sh && ./configure && make && make install
295+
275296WORKDIR /ovms
276297
277- ARG PROJECT_VERSION="2025.3.0 "
298+ ARG PROJECT_VERSION="2025.4.1 "
278299LABEL description="OpenVINO Model Server"
279300ARG minitrace_flags
280301
@@ -320,6 +341,7 @@ FROM $BUILD_IMAGE as capi-build
320341ARG CAPI_FLAGS="--strip=always --config=mp_off_py_off --//:distro=redhat"
321342ARG JOBS=40
322343ARG LTO_ENABLE=OFF
344+ WORKDIR /ovms
323345RUN bazel build --jobs $JOBS ${CAPI_FLAGS} //src:ovms_shared
324346
325347# C api app with bazel
@@ -337,12 +359,7 @@ RUN mkdir -p /ovms_release/lib/ ; find /ovms/bazel-out/k8-*/bin -iname 'libovms_
337359
338360FROM $BUILD_IMAGE as pkg
339361
340- RUN mkdir /patchelf
341- WORKDIR /patchelf
342- # hadolint ignore=DL3003
343- RUN wget -q https://github.com/NixOS/patchelf/archive/0.10.tar.gz && \
344- tar -xf 0.10.tar.gz && cd patchelf-0.10 && \
345- ./bootstrap.sh && ./configure && make && make install
362+ COPY --from=build /usr/local/bin/patchelf /usr/local/bin/patchelf
346363
347364WORKDIR /
348365ARG BASE_OS=redhat
@@ -351,9 +368,7 @@ ARG FUZZER_BUILD=0
351368ARG debug_bazel_flags="--strip=always --config=mp_on_py_on --//:distro=redhat"
352369COPY --from=capi-build /ovms_release/lib/libovms_shared.so /ovms_release/lib/
353370COPY create_package.sh /
354- RUN ./create_package.sh ; if ! [[ $debug_bazel_flags == *"_py_off"* ]]; then \
355- echo $'#!/bin/bash\npython3 -m openvino_tokenizers.cli "$@"' > /ovms_release/bin/convert_tokenizer ; \
356- chmod +x /ovms_release/bin/convert_tokenizer ; fi
371+ RUN ./create_package.sh
357372
358373# hadolint ignore=DL3059
359374RUN chown -R ovms:ovms /ovms_release
@@ -366,7 +381,7 @@ RUN if [ -f /ovms_release/lib/libovms_shared.so ] ; then mv /ovms_release/lib/li
366381FROM $RELEASE_BASE_IMAGE as release
367382LABEL "name"="OVMS"
368383LABEL "vendor"="Intel Corporation"
369- LABEL "version"="2025.3.0 "
384+ LABEL "version"="2025.4.1 "
370385LABEL "release"="2025"
371386LABEL "summary"="OpenVINO(TM) Model Server"
372387LABEL "description"="OpenVINO(TM) Model Server is a solution for serving AI models"
@@ -413,12 +428,12 @@ COPY --from=pkg /usr/local/lib64/python3.*/site-packages/markupsafe /ovms/python
413428COPY --from=pkg /licenses /licenses
414429
415430# Setup Python Demos Environment
416- COPY demos/python_demos/requirements.txt .
431+ COPY demos/python_demos/base- requirements.txt .
417432RUN if [ -f /usr/bin/dnf ] ; then export DNF_TOOL=dnf ; \
418433 else export DNF_TOOL=microdnf ; fi ; \
419434 $DNF_TOOL install -y python3-pip git iproute net-tools ; $DNF_TOOL clean all ; \
420- pip3 install --no-cache-dir -r requirements.txt ; \
421- rm -f requirements.txt
435+ pip3 install --no-cache-dir -r base- requirements.txt ; \
436+ rm -f base- requirements.txt
422437
423438USER ovms
424439ENTRYPOINT ["/ovms/bin/ovms"]
0 commit comments