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 dnf update -y && \ dnf install -y supervisor &&\ dnf clean all && \ rm -rf /var/cache/dnf/* RUN curl -fsSL https://github.com/abtreece/confd/releases/download/v0.20.0/confd-v0.20.0-linux-amd64.tar.gz | tar -xz -C /usr/local/bin && \ chmod +x /usr/local/bin/confd RUN mkdir /etc/opcua COPY ./confd/ /etc/confd/ COPY ./supervisord/ /etc/supervisord/ COPY --from=build /app/build/opcua_exporter /usr/local/bin CMD [ "supervisord", "-c", "/etc/supervisord/supervisord.conf" ]