update release build, use also prebuild alpine dependencies

This commit is contained in:
einhorn_b 2021-05-04 11:56:16 +02:00
parent 92d8316184
commit efc7c8bc2d
2 changed files with 37 additions and 73 deletions

View File

@ -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})

View File

@ -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"]