FROM openeuler/openeuler:24.03 AS dev RUN dnf update -y && \ dnf install -y git gcc g++ gdb make autoconf automake curl zip unzip tar &&\ dnf clean all && \ rm -rf /var/cache/dnf/* ENV VCPKG_ROOT="/vcpkg" RUN curl -fsSL https://github.com/Kitware/CMake/releases/download/v3.27.2/cmake-3.27.2-linux-x86_64.sh -o cmake_install.sh && \ chmod +x cmake_install.sh && \ ./cmake_install.sh --prefix=/usr/local --skip-license && \ rm -rf cmake_install.sh RUN curl -fsSL https://github.com/ninja-build/ninja/releases/download/v1.11.1/ninja-linux.zip -o ninja-linux.zip && \ unzip ninja-linux.zip && \ rm -rf ninja-linux.zip && \ mv ninja /usr/local/bin/ && \ chmod +x /usr/local/bin/ninja RUN curl -fsSL https://github.com/microsoft/vcpkg-tool/releases/download/2024-07-10/vcpkg-glibc -o /usr/local/bin/vcpkg && \ chmod +x /usr/local/bin/vcpkg && \ git clone -b 2024.07.12 --depth 1 https://github.com/microsoft/vcpkg /vcpkg RUN vcpkg install civetweb prometheus-cpp spdlog nlohmann-json yaml-cpp open62541 --clean-after-build FROM dev AS build RUN mkdir /app WORKDIR /app COPY . /app RUN mkdir build && \ cd build && \ cmake .. -DCMAKE_TOOLCHAIN_FILE=/vcpkg/scripts/buildsystems/vcpkg.cmake -DCMAKE_BUILD_TYPE=Release -G Ninja && \ cmake --build . --target opcua_exporter FROM openeuler/openeuler:24.03 RUN mkdir /data COPY --from=build /app/build/opcua_exporter /usr/local/bin CMD [ "opcua_exporter", "/data/opcua/opcua.yaml" ]