-
Notifications
You must be signed in to change notification settings - Fork 410
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
alpine image #1382
Merged
Merged
alpine image #1382
Changes from 6 commits
Commits
Show all changes
10 commits
Select commit
Hold shift + click to select a range
7476112
alpine image
esigo a15aded
usage
esigo 21cd671
fix gRPC
esigo fa4d15b
Merge branch 'main' into alpine-image
esigo 057987d
Merge branch 'main' into alpine-image
ThomsonTan bd29c0d
fix parallel
esigo 909e946
Merge branch 'main' into alpine-image
esigo 21396eb
add thrift
esigo 9c1fbe4
doc
esigo c6554dd
fix typo
esigo File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
ARG BASE_IMAGE=ubuntu:latest | ||
|
||
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 / /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 \ | ||
-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 / |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
#!/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 | ||
echo "how to use:" | ||
echo | ||
echo "docker create -ti --name otel otel-cpp-<base_image> bash" | ||
echo "docker cp otel:/ ./" | ||
echo "docker rm -f otel" | ||
echo | ||
echo "or:" | ||
echo | ||
echo "COPY --from=otel-cpp-<base_image> /usr" | ||
} | ||
|
||
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_image} \ | ||
--build-arg CORES=${cores} \ | ||
--build-arg OTEL_GIT_TAG=${otel_git_tag} \ | ||
-t otel-cpp-${base_image} -f Dockerfile . |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
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 . -j ${CORES} --target install | ||
|
||
FROM scratch as final | ||
|
||
COPY --from=grpc /opt/third_party/install / |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
should we add gtest/gmock too as part of this distro specific Dockerfile (and enable building tests). Also, how can we take care of thrift installation - should it be separate Dockerfile similar to way we are doing for grpc?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yes
gtest
andgmock
could be part of the base. I would use a separate Dockerfile forthrift
as well. This would allow users to reuse our Docker files in their CI.