From efc7c8bc2d87dc0d40bcf0f0ad57c77273b3df06 Mon Sep 17 00:00:00 2001 From: einhorn_b Date: Tue, 4 May 2021 11:56:16 +0200 Subject: [PATCH] update release build, use also prebuild alpine dependencies --- login_server/CMakeLists.txt.lib | 38 +++++++++-------- login_server/Dockerfile | 72 +++++++++------------------------ 2 files changed, 37 insertions(+), 73 deletions(-) diff --git a/login_server/CMakeLists.txt.lib b/login_server/CMakeLists.txt.lib index 5c0d5310c..6de10f72e 100644 --- a/login_server/CMakeLists.txt.lib +++ b/login_server/CMakeLists.txt.lib @@ -31,20 +31,7 @@ include_directories(${Protobuf_INCLUDE_DIRS}) FIND_PACKAGE(gRPC CONFIG REQUIRED) find_program(GRPC_CPP_PLUGIN grpc_cpp_plugin) -set(PROTOC_LIB_PATH "/usr/local/lib") -find_library(PROTOBUF_LIB protobufd PATHS ${PROTOC_LIB_PATH} REQUIRED) -find_library(PROTOBUF_LITE_LIB protobuf-lited PATHS ${PROTOC_LIB_PATH} REQUIRED) -find_library(PROTOC_LIB protocd PATHS ${PROTOC_LIB_PATH} REQUIRED) - -set(DEPENDENCIES_GRPC_LIB_PATH "pre_build/dependencies/grpc/lib") -find_library(GRPC_PP_REFLECTION grpc++_reflection PATHS ${DEPENDENCIES_GRPC_LIB_PATH} REQUIRED) -find_library(GRPC_PP grpc++ PATHS ${DEPENDENCIES_GRPC_LIB_PATH} REQUIRED) -find_library(GRPC_GPR gpr PATHS ${DEPENDENCIES_GRPC_LIB_PATH} REQUIRED) -#find_library(GRPC_GRPC grpc PATHS ${DEPENDENCIES_GRPC_LIB_PATH} REQUIRED) - - -#set(GRPC_LIBS ${GRPC_PP_REFLECTION} ${GRPC_PP} ${GRPC_GPR}) -set(PROTOBUF_LIBS ${PROTOBUF_LIB} ${PROTOBUF_LITE_LIB} ${PROTOC_LIB}) +set(PROTOBUF_LIBS protobuf::libprotobuf protobuf::libprotobuf-lite protobuf::libprotoc) ############################## parse proto files ################################### @@ -175,12 +162,23 @@ find_library(MYSQL_LIBRARIES mariadb PATHS "/usr/local/lib/mariadb" REQUIRED) ############################## config and add poco ################################### set(BUILD_LIB_PATH "(/usr/local/lib") -find_library(POCO_FOUNDATION_LIB PocoFoundationd PATHS ${BUILD_LIB_PATH} REQUIRED) -find_library(POCO_UTIL_LIB PocoUtild PATHS ${BUILD_LIB_PATH} REQUIRED) -find_library(POCO_NET_SSL_LIB PocoNetSSLd PATHS ${BUILD_LIB_PATH} REQUIRED) -find_library(POCO_DATA_LIB PocoDatad PATHS ${BUILD_LIB_PATH} REQUIRED) -find_library(POCO_JSON_LIB PocoJSONd PATHS ${BUILD_LIB_PATH} REQUIRED) -find_library(POCO_NET_LIB PocoNetd PATHS ${BUILD_LIB_PATH} REQUIRED) +IF(CMAKE_BUILD_TYPE MATCHES Debug) + find_library(POCO_FOUNDATION_LIB PocoFoundationd PATHS ${BUILD_LIB_PATH} REQUIRED) + find_library(POCO_UTIL_LIB PocoUtild PATHS ${BUILD_LIB_PATH} REQUIRED) + find_library(POCO_NET_SSL_LIB PocoNetSSLd PATHS ${BUILD_LIB_PATH} REQUIRED) + find_library(POCO_DATA_LIB PocoDatad PATHS ${BUILD_LIB_PATH} REQUIRED) + find_library(POCO_JSON_LIB PocoJSONd PATHS ${BUILD_LIB_PATH} REQUIRED) + find_library(POCO_NET_LIB PocoNetd PATHS ${BUILD_LIB_PATH} REQUIRED) + message("use Poco Debug libs") +ELSE() + find_library(POCO_FOUNDATION_LIB PocoFoundation PATHS ${BUILD_LIB_PATH} REQUIRED) + find_library(POCO_UTIL_LIB PocoUtil PATHS ${BUILD_LIB_PATH} REQUIRED) + find_library(POCO_NET_SSL_LIB PocoNetSSL PATHS ${BUILD_LIB_PATH} REQUIRED) + find_library(POCO_DATA_LIB PocoData PATHS ${BUILD_LIB_PATH} REQUIRED) + find_library(POCO_JSON_LIB PocoJSON PATHS ${BUILD_LIB_PATH} REQUIRED) + find_library(POCO_NET_LIB PocoNet PATHS ${BUILD_LIB_PATH} REQUIRED) + message("use Poco Release libs") +ENDIF() set(POCO_LIBS ${POCO_FOUNDATION_LIB} ${POCO_UTIL_LIB} ${POCO_NET_SSL_LIB} ${POCO_DATA_LIB} ${POCO_JSON_LIB} ${POCO_NET_LIB}) diff --git a/login_server/Dockerfile b/login_server/Dockerfile index 0c7ff2849..93ff96978 100644 --- a/login_server/Dockerfile +++ b/login_server/Dockerfile @@ -1,76 +1,42 @@ -######################################################################################################### -# cmake -######################################################################################################### -FROM gcc:9 as cmake-gcc-9 - -ENV DOCKER_WORKDIR="/code" -RUN mkdir -p ${DOCKER_WORKDIR} -WORKDIR ${DOCKER_WORKDIR} - -USER root - -RUN git clone https://github.com/Kitware/CMake.git --branch=v3.19.8 \ - && cd CMake \ - && ./bootstrap \ - && make -j${nproc} \ - && make install - - ######################################################################################################### # Build release ######################################################################################################### -From cmake-gcc-9 as release +FROM gradido/login_dependencies:alpine-release-1 as release ENV DOCKER_WORKDIR="/code" - -USER root - -RUN apt-get update \ - && apt-get -y --no-install-recommends install libboost-all-dev gettext \ - && apt-get clean; rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/* - -RUN mkdir -p ${DOCKER_WORKDIR} WORKDIR ${DOCKER_WORKDIR} -COPY . . - -RUN cd dependencies/mariadb-connector-c && \ - mkdir build && \ - cd build && \ - cmake -DWITH_SSL=OFF .. - -RUN chmod +x compile_pot.sh && ./compile_pot.sh - +COPY ./CMakeLists.txt.lib ./CMakeLists.txt +COPY ./src ./src +COPY ./dependencies ./dependencies +COPY ./scripts ./scripts +RUN cd scripts && \ + chmod +x compile_pot.sh && \ + ./compile_pot.sh + RUN mkdir build && \ cd build && \ - cmake .. && \ - make -j$(nproc) protoc grpc_cpp_plugin - -RUN chmod +x unix_parse_proto.sh && ./unix_parse_proto.sh + cmake -DCMAKE_BUILD_TYPE=Release .. && \ + make -j$(nproc) Gradido_LoginServer -RUN cd build && \ - cmake .. && \ - make -j$(nproc) Gradido_LoginServer - -CMD ["./code"] ######################################################################################################### # run release ######################################################################################################### #From alpine:latest as login_server -FROM ubuntu:latest as login_server +FROM alpine:3.13.5 as login_server USER root WORKDIR "/usr/bin" -RUN apt-get update \ - && apt-get -y --no-install-recommends install libsodium-dev libssl-dev \ - && apt-get clean; rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/* - COPY --from=release /code/build/bin/Gradido_LoginServer /usr/bin/ -COPY --from=release /code/build/lib/*.so.64 /usr/lib/ -COPY --from=release /code/build/dependencies/mariadb-connector-c/libmariadb/libmariadb.so.3 /usr/lib/ -#COPY --from=release /code/build/lib/libmariadb.so.3 /usr/lib/ + +COPY --from=release /usr/local/lib/mariadb/libmariadb.so.3 /usr/local/lib/ +COPY --from=release /usr/local/lib/libPoco* /usr/local/lib/ +COPY --from=release /usr/lib/libsodium.so.23 /usr/lib/ +COPY --from=release /usr/lib/libstdc++.so.6 /usr/lib/ +COPY --from=release /usr/lib/libgcc_s.so.1 /usr/lib/ + RUN chmod +x /usr/bin/Gradido_LoginServer ENTRYPOINT ["/usr/bin/Gradido_LoginServer"]