58 lines
1.8 KiB
Docker
58 lines
1.8 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 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" ] |