Files
data-collection-terminal/opcua-exporter/Dockerfile
2024-09-04 10:25:47 +08:00

47 lines
1.5 KiB
Docker

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" ]