Skip to content

Instantly share code, notes, and snippets.

@kuzaxak
Created September 8, 2022 16:35
Show Gist options
  • Save kuzaxak/633cac456565bdfa8954a5145cf811c1 to your computer and use it in GitHub Desktop.
Save kuzaxak/633cac456565bdfa8954a5145cf811c1 to your computer and use it in GitHub Desktop.
OpenTelemetry nginx extension
ARG image=alpine:3.14.2
FROM $image AS build
RUN apk update \
&& apk upgrade \
&& apk add \
curl \
git \
build-base \
linux-headers \
cmake \
musl-utils \
pcre-dev \
curl-dev
ENV BUILD_PATH=/tmp/build
ENV MAKEFLAGS=-j8
RUN mkdir -p /etc/nginx \
&& mkdir --verbose -p "$BUILD_PATH"
RUN git clone --shallow-submodules --depth 1 --recurse-submodules -b v1.36.4 \
https://github.com/grpc/grpc \
&& cd grpc \
&& mkdir -p cmake/build \
&& cd cmake/build \
&& cmake \
-DgRPC_INSTALL=ON \
-DgRPC_BUILD_TESTS=OFF \
-DCMAKE_INSTALL_PREFIX=/install \
-DCMAKE_BUILD_TYPE=Release \
-DgRPC_BUILD_GRPC_NODE_PLUGIN=OFF \
-DgRPC_BUILD_GRPC_OBJECTIVE_C_PLUGIN=OFF \
-DgRPC_BUILD_GRPC_PHP_PLUGIN=OFF \
-DgRPC_BUILD_GRPC_PHP_PLUGIN=OFF \
-DgRPC_BUILD_GRPC_PYTHON_PLUGIN=OFF \
-DgRPC_BUILD_GRPC_RUBY_PLUGIN=OFF \
../.. \
&& make -j2 \
&& make install
RUN git clone --shallow-submodules --depth 1 --recurse-submodules -b v1.3.0 \
https://github.com/open-telemetry/opentelemetry-cpp.git \
&& cd opentelemetry-cpp \
&& mkdir build \
&& cd build \
&& cmake -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/install \
-DCMAKE_PREFIX_PATH=/install \
-DWITH_OTLP=ON \
-DWITH_OTLP_GRPC=ON \
-DWITH_OTLP_HTTP=OFF \
-DBUILD_TESTING=OFF \
-DWITH_EXAMPLES=OFF \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
.. \
&& make -j2 \
&& make install
RUN mkdir -p otel-nginx/build && mkdir -p otel-nginx/src
COPY src otel-nginx/src/
COPY CMakeLists.txt nginx.cmake otel-nginx/
RUN cd otel-nginx/build \
&& cmake -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_PREFIX_PATH=/install \
-DCMAKE_INSTALL_PREFIX=/usr/share/nginx/modules \
-DNGINX_VERSION=1.19.10 \
.. \
&& make -j2 \
&& make install
FROM scratch AS export
COPY --from=build /otel-nginx/build/otel_ngx_module.so .
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment