From 74761129df43bd66b2af07e3a61fa2d022d432cf Mon Sep 17 00:00:00 2001 From: Oblivion Date: Sat, 7 May 2022 18:09:21 +0000 Subject: [PATCH 1/7] alpine image --- docker/Dockerfile | 29 +++++++++++++ docker/Dockerfile.alpine.base | 14 +++++++ docker/build.sh | 53 ++++++++++++++++++++++++ docker/grpc/CMakeLists.txt | 78 +++++++++++++++++++++++++++++++++++ docker/grpc/Dockerfile | 22 ++++++++++ 5 files changed, 196 insertions(+) create mode 100644 docker/Dockerfile create mode 100644 docker/Dockerfile.alpine.base create mode 100644 docker/build.sh create mode 100644 docker/grpc/CMakeLists.txt create mode 100644 docker/grpc/Dockerfile diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 0000000000..98e44c6641 --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,29 @@ +ARG BASE_IMAGE=ubuntu:latest +FROM ${BASE_IMAGE} AS otel-cpp + +ARG BASE_IMAGE +ARG CORES=${nproc} +ARG OTEL_GIT_TAG=v1.3.0 + +COPY --from=grpc-${BASE_IMAGE} / /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=OFF \ + -DCMAKE_INSTALL_PREFIX=/opt/third_party/install \ + -DBUILD_TESTING=OFF \ + -DWITH_OTLP=ON \ + -DBUILD_SHARED_LIBS=ON \ + .. \ + && cmake --build . --target install + +FROM scratch as final + +COPY --from=otel-cpp /opt/third_party/install / diff --git a/docker/Dockerfile.alpine.base b/docker/Dockerfile.alpine.base new file mode 100644 index 0000000000..0a6b09eae9 --- /dev/null +++ b/docker/Dockerfile.alpine.base @@ -0,0 +1,14 @@ +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 + +RUN mkdir -p /opt/third_party/install + +WORKDIR /opt diff --git a/docker/build.sh b/docker/build.sh new file mode 100644 index 0000000000..0445bbb6ae --- /dev/null +++ b/docker/build.sh @@ -0,0 +1,53 @@ +#!/bin/bash + +Help() +{ + # Display Help + echo "Add description of the script functions here." + echo + echo "Syntax: scriptTemplate [-b|o|g|j]" + echo "options:" + echo "b Base image" + echo "o OpenTelemetry-cpp git tag" + echo "h Print Help." + echo "g gRPC git tag" + echo "j Parallel jobs" + echo +} + +while getopts ":h:b:o:g:j:" option; do + case $option in + h) # display Help + Help + exit;; + b) # base image + base_image=$OPTARG + ;; + o) # OpenTelemetry-cpp git tag + otel_git_tag=$OPTARG + ;; + g) # gRPC git tag + grpc_git_tag=$OPTARG + ;; + j) # number of cores + cores=$OPTARG + ;; + \?) + Help + exit;; + esac +done + +docker build -t base-${base_image}-dev -f Dockerfile.${base_image}.base . + +pushd grpc/ +docker build --build-arg BASE_IMAGE=base-${base_image}-dev \ + --build-arg GRPC_GIT_TAG=${grpc_git_tag} \ + --build-arg CORES=${cores} \ + -t grpc-${base_image} -f Dockerfile . +popd + +docker build --build-arg BASE_IMAGE=base-${base_image}-dev \ + --build-arg CORES=${cores} \ + --build-arg OTEL_GIT_TAG=${otel_git_tag} \ + -t otel-cpp-${base_image} -f Dockerfile . diff --git a/docker/grpc/CMakeLists.txt b/docker/grpc/CMakeLists.txt new file mode 100644 index 0000000000..89954b23ff --- /dev/null +++ b/docker/grpc/CMakeLists.txt @@ -0,0 +1,78 @@ +cmake_minimum_required(VERSION 3.11 FATAL_ERROR) + +project( + dependencies + LANGUAGES CXX + VERSION 0.0.1) + +set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_EXTENSIONS OFF) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_CXX_FLAGS "-O2") + +set(CMAKE_BUILD_TYPE + Release + CACHE STRING "Build type" FORCE) + +include(GNUInstallDirs) + +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY + ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}) +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY + ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}) +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY + ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}) + +set(INSTALL_LIBDIR + ${CMAKE_INSTALL_LIBDIR} + CACHE PATH "directory for libraries") +set(INSTALL_BINDIR + ${CMAKE_INSTALL_BINDIR} + CACHE PATH "directory for executables") +set(INSTALL_INCLUDEDIR + ${CMAKE_INSTALL_INCLUDEDIR} + CACHE PATH "directory for header files") + +set(DEF_INSTALL_CMAKEDIR share/cmake/${PROJECT_NAME}) +set(INSTALL_CMAKEDIR + ${DEF_INSTALL_CMAKEDIR} + CACHE PATH "directory for CMake files") + +set_property(DIRECTORY PROPERTY EP_BASE ${CMAKE_BINARY_DIR}/subs) + +set(STAGED_INSTALL_PREFIX ${CMAKE_BINARY_DIR}/stage) +message(STATUS "${PROJECT_NAME} staged install: ${STAGED_INSTALL_PREFIX}") + +find_package(OpenSSL REQUIRED) +message("OpenSSL include dir: ${OPENSSL_INCLUDE_DIR}") +message("OpenSSL libraries: ${OPENSSL_LIBRARIES}") + +set(GRPC_GIT_TAG + "v1.45.2" + CACHE STRING "gRPC version") + +include(ExternalProject) +ExternalProject_Add( + grpc + GIT_REPOSITORY https://github.com/grpc/grpc.git + GIT_TAG ${GRPC_GIT_TAG} + GIT_SHALLOW 1 + UPDATE_COMMAND "" + CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${STAGED_INSTALL_PREFIX} + -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} + -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} + -DgRPC_SSL_PROVIDER=package + -DOPENSSL_ROOT_DIR=OpenSSL + -DgRPC_BUILD_TESTS=OFF + -DBUILD_SHARED_LIBS=ON + CMAKE_CACHE_ARGS -DCMAKE_CXX_FLAGS:STRING=${CMAKE_CXX_FLAGS} + TEST_AFTER_INSTALL 0 + DOWNLOAD_NO_PROGRESS 1 + LOG_CONFIGURE 1 + LOG_BUILD 0 + LOG_INSTALL 1) + +install( + DIRECTORY ${STAGED_INSTALL_PREFIX}/ + DESTINATION . + USE_SOURCE_PERMISSIONS) diff --git a/docker/grpc/Dockerfile b/docker/grpc/Dockerfile new file mode 100644 index 0000000000..25c692b102 --- /dev/null +++ b/docker/grpc/Dockerfile @@ -0,0 +1,22 @@ +ARG BASE_IMAGE=ubuntu:latest +FROM ${BASE_IMAGE} AS grpc + +ARG CORES=${nproc} +ARG GRPC_GIT_TAG=v1.45.2 + +RUN mkdir mkdir -p /opt/third_party/grpc + +WORKDIR /opt/third_party/grpc + +ADD CMakeLists.txt /opt/third_party/grpc + +RUN mkdir build \ + && cd build \ + && cmake -DCMAKE_INSTALL_PREFIX=/opt/third_party/install \ + -DGRPC_GIT_TAG=${GRPC_GIT_TAG} /opt/third_party/grpc \ + && cmake --build . \ + && cmake --build . -j ${CORES} --target install + +FROM scratch as final + +COPY --from=grpc /opt/third_party/install / \ No newline at end of file From a15adedc2aa723d17be113c2210ac5c97e0e1651 Mon Sep 17 00:00:00 2001 From: Oblivion Date: Sat, 7 May 2022 19:04:26 +0000 Subject: [PATCH 2/7] usage --- docker/build.sh | 9 +++++++++ docker/grpc/Dockerfile | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/docker/build.sh b/docker/build.sh index 0445bbb6ae..111b547892 100644 --- a/docker/build.sh +++ b/docker/build.sh @@ -13,6 +13,15 @@ Help() echo "g gRPC git tag" echo "j Parallel jobs" echo + echo "how to use:" + echo + echo "docker create -ti --name otel otel-cpp- bash" + echo "docker cp otel:/ ./" + echo "docker rm -f otel" + echo + echo "or:" + echo + echo "COPY --from=otel-cpp- /usr" } while getopts ":h:b:o:g:j:" option; do diff --git a/docker/grpc/Dockerfile b/docker/grpc/Dockerfile index 25c692b102..efd3c627c2 100644 --- a/docker/grpc/Dockerfile +++ b/docker/grpc/Dockerfile @@ -19,4 +19,4 @@ RUN mkdir build \ FROM scratch as final -COPY --from=grpc /opt/third_party/install / \ No newline at end of file +COPY --from=grpc /opt/third_party/install / From 21cd6712a731f81653236cff13172e504dd5b8e6 Mon Sep 17 00:00:00 2001 From: Oblivion Date: Sat, 7 May 2022 19:28:54 +0000 Subject: [PATCH 3/7] fix gRPC --- docker/Dockerfile | 9 ++++++--- docker/build.sh | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 98e44c6641..2899dce5f9 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,11 +1,14 @@ ARG BASE_IMAGE=ubuntu:latest -FROM ${BASE_IMAGE} AS otel-cpp -ARG BASE_IMAGE +ARG GRPC_IMAGE=grpc-${BASE_IMAGE} +FROM ${GRPC_IMAGE} as grpc + +FROM base-${BASE_IMAGE}-dev AS otel-cpp + ARG CORES=${nproc} ARG OTEL_GIT_TAG=v1.3.0 -COPY --from=grpc-${BASE_IMAGE} / /usr/local +COPY --from=grpc / /usr/local #install opentelemetry-cpp RUN git clone --recurse-submodules -j ${CORES} --depth=1 \ diff --git a/docker/build.sh b/docker/build.sh index 111b547892..a102b12e59 100644 --- a/docker/build.sh +++ b/docker/build.sh @@ -56,7 +56,7 @@ docker build --build-arg BASE_IMAGE=base-${base_image}-dev \ -t grpc-${base_image} -f Dockerfile . popd -docker build --build-arg BASE_IMAGE=base-${base_image}-dev \ +docker build --build-arg BASE_IMAGE=${base_image} \ --build-arg CORES=${cores} \ --build-arg OTEL_GIT_TAG=${otel_git_tag} \ -t otel-cpp-${base_image} -f Dockerfile . From bd29c0de0a26e76876f0145dea3bbb109f2e2403 Mon Sep 17 00:00:00 2001 From: Oblivion Date: Thu, 12 May 2022 19:31:56 +0000 Subject: [PATCH 4/7] fix parallel --- docker/Dockerfile | 3 ++- docker/grpc/Dockerfile | 1 - 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 2899dce5f9..f0055b7feb 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -23,9 +23,10 @@ RUN git clone --recurse-submodules -j ${CORES} --depth=1 \ -DCMAKE_INSTALL_PREFIX=/opt/third_party/install \ -DBUILD_TESTING=OFF \ -DWITH_OTLP=ON \ + -DWITH_OTLP_GRPC=ON \ -DBUILD_SHARED_LIBS=ON \ .. \ - && cmake --build . --target install + && cmake --build . -j ${CORES} --target install FROM scratch as final diff --git a/docker/grpc/Dockerfile b/docker/grpc/Dockerfile index efd3c627c2..fee3082b2d 100644 --- a/docker/grpc/Dockerfile +++ b/docker/grpc/Dockerfile @@ -14,7 +14,6 @@ RUN mkdir build \ && cd build \ && cmake -DCMAKE_INSTALL_PREFIX=/opt/third_party/install \ -DGRPC_GIT_TAG=${GRPC_GIT_TAG} /opt/third_party/grpc \ - && cmake --build . \ && cmake --build . -j ${CORES} --target install FROM scratch as final From 21396ebddf7e1e8a340a203a04ec7604504a1685 Mon Sep 17 00:00:00 2001 From: Oblivion Date: Mon, 16 May 2022 19:58:33 +0000 Subject: [PATCH 5/7] add thrift --- docker/Dockerfile | 7 ++- docker/Dockerfile.alpine.base | 3 +- docker/build.sh | 26 ++++++++++- docker/grpc/CMakeLists.txt | 6 +++ docker/thrift/CMakeLists.txt | 87 +++++++++++++++++++++++++++++++++++ docker/thrift/Dockerfile | 21 +++++++++ 6 files changed, 146 insertions(+), 4 deletions(-) create mode 100644 docker/thrift/CMakeLists.txt create mode 100644 docker/thrift/Dockerfile diff --git a/docker/Dockerfile b/docker/Dockerfile index f0055b7feb..118cac62f9 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,7 +1,9 @@ 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 @@ -9,6 +11,7 @@ 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 \ @@ -19,7 +22,7 @@ RUN git clone --recurse-submodules -j ${CORES} --depth=1 \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_POSITION_INDEPENDENT_CODE=TRUE \ -DWITH_ZIPKIN=ON \ - -DWITH_JAEGER=OFF \ + -DWITH_JAEGER=ON \ -DCMAKE_INSTALL_PREFIX=/opt/third_party/install \ -DBUILD_TESTING=OFF \ -DWITH_OTLP=ON \ diff --git a/docker/Dockerfile.alpine.base b/docker/Dockerfile.alpine.base index 0a6b09eae9..2595efa70f 100644 --- a/docker/Dockerfile.alpine.base +++ b/docker/Dockerfile.alpine.base @@ -7,7 +7,8 @@ RUN apk update RUN apk add --update alpine-sdk \ && apk add cmake openssl openssl-dev g++ \ - curl-dev git autoconf libtool linux-headers + curl-dev git autoconf libtool linux-headers \ + boost-dev libevent-dev openssl-dev RUN mkdir -p /opt/third_party/install diff --git a/docker/build.sh b/docker/build.sh index a102b12e59..53773b739f 100644 --- a/docker/build.sh +++ b/docker/build.sh @@ -1,5 +1,12 @@ #!/bin/bash +# Copyright The OpenTelemetry Authors +# SPDX-License-Identifier: Apache-2.0 + +set -o errexit +set -o nounset +set -o pipefail + Help() { # Display Help @@ -11,6 +18,7 @@ Help() echo "o OpenTelemetry-cpp git tag" echo "h Print Help." echo "g gRPC git tag" + echo "t thrift version" echo "j Parallel jobs" echo echo "how to use:" @@ -24,7 +32,13 @@ Help() echo "COPY --from=otel-cpp- /usr" } -while getopts ":h:b:o:g:j:" option; do +base_image=${base_image:="alpine"} +grpc_git_tag=${grpc_git_tag:="v1.43.2"} +thrift_version=${thrift_version:="0.14.1"} +otel_git_tag=${otel_git_tag:="v1.3.0"} +cores=${cores:=1} + +while getopts ":h:b:o:g:j:t:" option; do case $option in h) # display Help Help @@ -38,6 +52,9 @@ while getopts ":h:b:o:g:j:" option; do g) # gRPC git tag grpc_git_tag=$OPTARG ;; + t) # thrfit version + thrift_version=$OPTARG + ;; j) # number of cores cores=$OPTARG ;; @@ -56,6 +73,13 @@ docker build --build-arg BASE_IMAGE=base-${base_image}-dev \ -t grpc-${base_image} -f Dockerfile . popd +pushd thrift/ +docker build --build-arg BASE_IMAGE=base-${base_image}-dev \ + --build-arg THRIFT_VERSION=${thrift_version} \ + --build-arg CORES=${cores} \ + -t thrift-${base_image} -f Dockerfile . +popd + docker build --build-arg BASE_IMAGE=${base_image} \ --build-arg CORES=${cores} \ --build-arg OTEL_GIT_TAG=${otel_git_tag} \ diff --git a/docker/grpc/CMakeLists.txt b/docker/grpc/CMakeLists.txt index 89954b23ff..8cb69cc6c3 100644 --- a/docker/grpc/CMakeLists.txt +++ b/docker/grpc/CMakeLists.txt @@ -65,6 +65,12 @@ ExternalProject_Add( -DOPENSSL_ROOT_DIR=OpenSSL -DgRPC_BUILD_TESTS=OFF -DBUILD_SHARED_LIBS=ON + -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 CMAKE_CACHE_ARGS -DCMAKE_CXX_FLAGS:STRING=${CMAKE_CXX_FLAGS} TEST_AFTER_INSTALL 0 DOWNLOAD_NO_PROGRESS 1 diff --git a/docker/thrift/CMakeLists.txt b/docker/thrift/CMakeLists.txt new file mode 100644 index 0000000000..0028dc48c7 --- /dev/null +++ b/docker/thrift/CMakeLists.txt @@ -0,0 +1,87 @@ +cmake_minimum_required(VERSION 3.11 FATAL_ERROR) + +project( + dependencies + LANGUAGES CXX + VERSION 0.0.1) + +set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_EXTENSIONS OFF) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_CXX_FLAGS "-O2") + +set(CMAKE_BUILD_TYPE + Release + CACHE STRING "Build type" FORCE) + +include(GNUInstallDirs) + +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY + ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}) +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY + ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}) +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY + ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}) + +set(INSTALL_LIBDIR + ${CMAKE_INSTALL_LIBDIR} + CACHE PATH "directory for libraries") +set(INSTALL_BINDIR + ${CMAKE_INSTALL_BINDIR} + CACHE PATH "directory for executables") +set(INSTALL_INCLUDEDIR + ${CMAKE_INSTALL_INCLUDEDIR} + CACHE PATH "directory for header files") + +set(DEF_INSTALL_CMAKEDIR share/cmake/${PROJECT_NAME}) +set(INSTALL_CMAKEDIR + ${DEF_INSTALL_CMAKEDIR} + CACHE PATH "directory for CMake files") + +set_property(DIRECTORY PROPERTY EP_BASE ${CMAKE_BINARY_DIR}/subs) + +set(STAGED_INSTALL_PREFIX ${CMAKE_BINARY_DIR}/stage) +message(STATUS "${PROJECT_NAME} staged install: ${STAGED_INSTALL_PREFIX}") + +find_package(OpenSSL REQUIRED) +message("OpenSSL include dir: ${OPENSSL_INCLUDE_DIR}") +message("OpenSSL libraries: ${OPENSSL_LIBRARIES}") + +set(THRIFT_VERSION + "0.14.1" + CACHE STRING "thrift version") + +include(ExternalProject) +ExternalProject_Add( + thrift + URL https://github.com/apache/thrift/archive/refs/tags/v${THRIFT_VERSION}.tar.gz + UPDATE_COMMAND "" + CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${STAGED_INSTALL_PREFIX} + -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} + -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} + -DCMAKE_POSITION_INDEPENDENT_CODE=TRUE + -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 + CMAKE_CACHE_ARGS -DCMAKE_CXX_FLAGS:STRING=${CMAKE_CXX_FLAGS} + TEST_AFTER_INSTALL 0 + DOWNLOAD_NO_PROGRESS 1 + LOG_CONFIGURE 1 + LOG_BUILD 0 + LOG_INSTALL 1) + +install( + DIRECTORY ${STAGED_INSTALL_PREFIX}/ + DESTINATION . + USE_SOURCE_PERMISSIONS) diff --git a/docker/thrift/Dockerfile b/docker/thrift/Dockerfile new file mode 100644 index 0000000000..2c57199f3f --- /dev/null +++ b/docker/thrift/Dockerfile @@ -0,0 +1,21 @@ +ARG BASE_IMAGE=ubuntu:latest +FROM ${BASE_IMAGE} AS thrift + +ARG CORES=${nproc} +ARG THRIFT_VERSION=0.14.1 + +RUN mkdir mkdir -p /opt/third_party/thrift + +WORKDIR /opt/third_party/th + +ADD CMakeLists.txt /opt/third_party/thrift + +RUN mkdir build \ + && cd build \ + && cmake -DCMAKE_INSTALL_PREFIX=/opt/third_party/install \ + -DTHRIFT_VERSION=${THRIFT_VERSION} /opt/third_party/thrift \ + && cmake --build . -j ${CORES} --target install + +FROM scratch as final + +COPY --from=thrift /opt/third_party/install / From 9c1fbe403ace654820c8f5ba41d9fc67a9762106 Mon Sep 17 00:00:00 2001 From: Oblivion Date: Mon, 16 May 2022 20:08:01 +0000 Subject: [PATCH 6/7] doc --- docker/README.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 docker/README.md diff --git a/docker/README.md b/docker/README.md new file mode 100644 index 0000000000..86cb42e3f6 --- /dev/null +++ b/docker/README.md @@ -0,0 +1,24 @@ +# OpenTelemetry library builder + +**How to use this build script:** + +The build script `build.sh` can be used to build OpenTelemetry and +it's dependencies withing the desired base image. +The final image only contains the necessary files in `/`. + +```sh +bash build.sh -b alpine -j ${nproc} -g v1.43.2 -o v1.3.0 -t 0.14.1 + +# copy to current dir +docker create -ti --name otel otel-cpp- bash +docker cp otel:/ ./ +docker rm -f otel + +docker create -ti --name grpc grpc- bash +docker cp grpc:/ ./ +docker rm -f grpc + +docker create -ti --name thrift thrift- bash +docker cp thrift:/ ./ +docker rm -f thrift +``` From c6554dd5ed8874fdc977e0f720bc88d792565237 Mon Sep 17 00:00:00 2001 From: Oblivion Date: Mon, 16 May 2022 20:11:37 +0000 Subject: [PATCH 7/7] fix typo --- docker/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/README.md b/docker/README.md index 86cb42e3f6..165667117c 100644 --- a/docker/README.md +++ b/docker/README.md @@ -3,7 +3,7 @@ **How to use this build script:** The build script `build.sh` can be used to build OpenTelemetry and -it's dependencies withing the desired base image. +it's dependencies within the desired base image. The final image only contains the necessary files in `/`. ```sh