Files
data-collection-terminal/opcua-exporter/Dockerfile

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