summaryrefslogtreecommitdiffstats
path: root/src/jaegertracing/opentelemetry-cpp/docker/Dockerfile
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/jaegertracing/opentelemetry-cpp/docker/Dockerfile36
-rw-r--r--src/jaegertracing/opentelemetry-cpp/docker/Dockerfile.alpine.base15
-rw-r--r--src/jaegertracing/opentelemetry-cpp/docker/Dockerfile.centos82
-rw-r--r--src/jaegertracing/opentelemetry-cpp/docker/Dockerfile.debian.deps43
4 files changed, 176 insertions, 0 deletions
diff --git a/src/jaegertracing/opentelemetry-cpp/docker/Dockerfile b/src/jaegertracing/opentelemetry-cpp/docker/Dockerfile
new file mode 100644
index 000000000..118cac62f
--- /dev/null
+++ b/src/jaegertracing/opentelemetry-cpp/docker/Dockerfile
@@ -0,0 +1,36 @@
+ARG BASE_IMAGE=ubuntu:latest
+ARG GRPC_IMAGE=grpc-${BASE_IMAGE}
+ARG THRIFT_IMAGE=thrift-${BASE_IMAGE}
+
+FROM ${GRPC_IMAGE} as grpc
+FROM ${THRIFT_IMAGE} as thrift
+
+FROM base-${BASE_IMAGE}-dev AS otel-cpp
+
+ARG CORES=${nproc}
+ARG OTEL_GIT_TAG=v1.3.0
+
+COPY --from=grpc / /usr/local
+COPY --from=thrift / /usr/local
+
+#install opentelemetry-cpp
+RUN git clone --recurse-submodules -j ${CORES} --depth=1 \
+ -b ${OTEL_GIT_TAG} https://github.com/open-telemetry/opentelemetry-cpp.git \
+ && cd opentelemetry-cpp \
+ && mkdir -p build && cd build \
+ && cmake \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_POSITION_INDEPENDENT_CODE=TRUE \
+ -DWITH_ZIPKIN=ON \
+ -DWITH_JAEGER=ON \
+ -DCMAKE_INSTALL_PREFIX=/opt/third_party/install \
+ -DBUILD_TESTING=OFF \
+ -DWITH_OTLP=ON \
+ -DWITH_OTLP_GRPC=ON \
+ -DBUILD_SHARED_LIBS=ON \
+ .. \
+ && cmake --build . -j ${CORES} --target install
+
+FROM scratch as final
+
+COPY --from=otel-cpp /opt/third_party/install /
diff --git a/src/jaegertracing/opentelemetry-cpp/docker/Dockerfile.alpine.base b/src/jaegertracing/opentelemetry-cpp/docker/Dockerfile.alpine.base
new file mode 100644
index 000000000..2595efa70
--- /dev/null
+++ b/src/jaegertracing/opentelemetry-cpp/docker/Dockerfile.alpine.base
@@ -0,0 +1,15 @@
+ARG BASE_IMAGE=alpine:latest
+ARG CORES=${nproc}
+
+FROM ${BASE_IMAGE} as final
+
+RUN apk update
+
+RUN apk add --update alpine-sdk \
+ && apk add cmake openssl openssl-dev g++ \
+ curl-dev git autoconf libtool linux-headers \
+ boost-dev libevent-dev openssl-dev
+
+RUN mkdir -p /opt/third_party/install
+
+WORKDIR /opt
diff --git a/src/jaegertracing/opentelemetry-cpp/docker/Dockerfile.centos b/src/jaegertracing/opentelemetry-cpp/docker/Dockerfile.centos
new file mode 100644
index 000000000..66138ba60
--- /dev/null
+++ b/src/jaegertracing/opentelemetry-cpp/docker/Dockerfile.centos
@@ -0,0 +1,82 @@
+FROM centos:7
+
+ARG TOOLSET_VER=11
+
+RUN yum update -y && yum install -y centos-release-scl epel-release
+RUN yum install -y devtoolset-${TOOLSET_VER} \
+ cmake3 git \
+ openssl-devel \
+ libcurl-devel \
+ && source /opt/rh/devtoolset-${TOOLSET_VER}/enable
+
+RUN echo "source /opt/rh/devtoolset-${TOOLSET_VER}/enable" >> /etc/bashrc
+RUN echo "BOOST_LIBRARYDIR=/usr/lib64/boost169" >> /etc/bashrc
+RUN echo "BOOST_INCLUDEDIR=/usr/include/boost169" >> /etc/bashrc
+
+ARG GRPC_VERSION=v1.43.2
+
+# install gRPC
+RUN git clone --depth=1 -b $GRPC_VERSION https://github.com/grpc/grpc.git \
+ && cd grpc && git submodule update --init \
+ && mkdir -p "third_party/abseil-cpp/build" && cd "third_party/abseil-cpp/build" \
+ && source /opt/rh/devtoolset-${TOOLSET_VER}/enable \
+ && cmake3 -DCMAKE_CXX_STANDARD=17 -DCMAKE_BUILD_TYPE=Release -DCMAKE_POSITION_INDEPENDENT_CODE=TRUE .. \
+ && make -j${nproc} install && cd ../../.. \
+ && mkdir build && cd build \
+ && cmake3 \
+ -DCMAKE_CXX_STANDARD=17 \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DgRPC_INSTALL=ON \
+ -DgRPC_BUILD_TESTS=OFF \
+ -DgRPC_ABSL_PROVIDER=package \
+ -DgRPC_SSL_PROVIDER=package \
+ .. && \
+ make -j${nproc} install && make clean && ldconfig
+
+# install thrift
+ARG THRIFT_VERSION=0.14.1
+RUN yum install -y \
+ boost169-devel \
+ libevent-devel \
+ wget \
+ && wget https://github.com/apache/thrift/archive/refs/tags/v$THRIFT_VERSION.tar.gz \
+ && tar -xvf v$THRIFT_VERSION.tar.gz \
+ && mkdir -p thrift-$THRIFT_VERSION/build && cd thrift-$THRIFT_VERSION/build \
+ && source /opt/rh/devtoolset-${TOOLSET_VER}/enable \
+ && export BOOST_INCLUDEDIR=/usr/include/boost169 \
+ && export BOOST_LIBRARYDIR=/usr/lib64/boost169 \
+ && cmake3 \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DBUILD_COMPILER=OFF \
+ -DBUILD_CPP=ON \
+ -DBUILD_LIBRARIES=ON \
+ -DBUILD_NODEJS=OFF \
+ -DBUILD_PYTHON=OFF \
+ -DBUILD_JAVASCRIPT=OFF \
+ -DBUILD_C_GLIB=OFF \
+ -DBUILD_JAVA=OFF \
+ -DBUILD_TESTING=OFF \
+ -DBUILD_TUTORIALS=OFF \
+ -DWITH_STDTHREADS=ON \
+ -DWITH_BOOSTTHREADS=OFF \
+ -DWITH_BOOST_FUNCTIONAL=OFF \
+ -DWITH_BOOST_SMART_PTR=OFF \
+ .. \
+ && make -j${nproc} && make install && ldconfig
+
+#install opentelemetry-cpp
+RUN git clone --depth=1 https://github.com/open-telemetry/opentelemetry-cpp.git \
+ && cd opentelemetry-cpp && git submodule update --init \
+ && mkdir -p build && cd build \
+ && source /opt/rh/devtoolset-${TOOLSET_VER}/enable \
+ && export BOOST_INCLUDEDIR=/usr/include/boost169 \
+ && export BOOST_LIBRARYDIR=/usr/lib64/boost169 \
+ && cmake3 \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_POSITION_INDEPENDENT_CODE=TRUE \
+ -DWITH_ZIPKIN=ON \
+ -DWITH_JAEGER=ON \
+ -DBUILD_TESTING=OFF \
+ -DWITH_OTLP=ON \
+ .. \
+ && make -j${nproc} install && ldconfig
diff --git a/src/jaegertracing/opentelemetry-cpp/docker/Dockerfile.debian.deps b/src/jaegertracing/opentelemetry-cpp/docker/Dockerfile.debian.deps
new file mode 100644
index 000000000..0634c1197
--- /dev/null
+++ b/src/jaegertracing/opentelemetry-cpp/docker/Dockerfile.debian.deps
@@ -0,0 +1,43 @@
+ARG BASE_IMAGE=ubuntu:latest
+ARG CORES=${nproc}
+
+FROM ${BASE_IMAGE} as base
+
+ENV DEBIAN_FRONTEND=noninteractive
+
+RUN apt-get update && apt-get install -y build-essential autoconf \
+ libtool pkg-config cmake git libssl-dev curl \
+ libcurl4-openssl-dev libgtest-dev libgmock-dev libbenchmark-dev
+
+WORKDIR /work
+RUN mkdir -p /opt/otel-cpp
+
+FROM base as grpc
+# install grpc, protobuf and abseil
+ARG GRPC_VERSION=1.43.2
+
+ADD setup_grpc.sh .
+RUN ./setup_grpc.sh -i "/opt/otel-cpp" -v ${GRPC_VERSION}
+
+FROM base as thrift
+RUN apt-get install -y --no-install-recommends wget
+
+# install thrift
+ARG THRIFT_VERSION=0.14.1
+ADD setup_thrift.sh .
+RUN ./setup_thrift.sh -i "/opt/otel-cpp"
+
+FROM scratch as final
+
+COPY --from=grpc /opt/otel-cpp /
+COPY --from=thrift /opt/otel-cpp /
+
+# how to use:
+#
+# docker create -ti --name deps otel-cpp-deps bash
+# docker cp deps:/ ./
+# docker rm -f deps
+#
+# or:
+#
+# COPY --from=otel-cpp-deps /usr