84 lines
2.9 KiB
Docker
84 lines
2.9 KiB
Docker
FROM openeuler/openeuler:24.03 AS dev
|
|
|
|
RUN dnf update -y && \
|
|
dnf install -y git gcc g++ gdb make ninja-build autoconf automake curl zip unzip tar &&\
|
|
dnf clean all && \
|
|
rm -rf /var/cache/dnf/*
|
|
|
|
ENV VCPKG_ROOT="/vcpkg" \
|
|
VCPKG_FORCE_SYSTEM_BINARIES=1
|
|
|
|
RUN architecture=$(uname -m) && \
|
|
if [ "$architecture" = "aarch64" ]; then \
|
|
echo "Current architecture is ARM64"; \
|
|
curl -fsSL https://github.com/Kitware/CMake/releases/download/v3.27.2/cmake-3.27.2-linux-aarch64.sh -o cmake_install.sh && \
|
|
chmod +x cmake_install.sh && \
|
|
./cmake_install.sh --prefix=/usr/local --skip-license && \
|
|
rm -rf cmake_install.sh; \
|
|
elif [ "$architecture" = "x86_64" ]; then \
|
|
echo "Current architecture is x86_64"; \
|
|
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; \
|
|
else \
|
|
echo "platform [$architecture] not supported"; \
|
|
exit 1; \
|
|
fi
|
|
|
|
RUN git clone -b 2024-08-01 --depth 1 https://github.com/microsoft/vcpkg-tool.git /tmp/vcpkg-tool \
|
|
&& cd /tmp/vcpkg-tool \
|
|
&& mkdir build \
|
|
&& cd build \
|
|
&& cmake .. \
|
|
&& cmake --build . --target vcpkg \
|
|
&& cp ./vcpkg /usr/local/bin/ \
|
|
&& chmod +x /usr/local/bin/vcpkg \
|
|
&& git clone -b 2024.08.23 --depth 1 https://github.com/microsoft/vcpkg.git /vcpkg \
|
|
&& rm -rf /tmp/vcpkg-tool
|
|
|
|
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 architecture=$(uname -m); \
|
|
if [ "$architecture" = "aarch64" ]; then \
|
|
echo "Current architecture is ARM64"; \
|
|
curl -fsSL https://github.com/abtreece/confd/releases/download/v0.20.0/confd-v0.20.0-linux-arm64.tar.gz | tar -xz -C /usr/local/bin; \
|
|
chmod +x /usr/local/bin/confd; \
|
|
elif [ "$architecture" = "x86_64" ]; then \
|
|
echo "Current architecture is x86_64"; \
|
|
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; \
|
|
else \
|
|
echo "platform [$architecture] not supported"; \
|
|
exit 1; \
|
|
fi
|
|
|
|
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" ] |