From 0da527917523530186e6effe63dc001fc99bd3e3 Mon Sep 17 00:00:00 2001 From: einhornimmond Date: Mon, 29 Mar 2021 17:47:55 +0200 Subject: [PATCH] build login-server on docker-compose up in a docker volume so it rebuild only neccessary parts if some c++ files have changed --- docker-compose.override.yml | 127 +++++++++++----------- login_server/Dockerfile.debug | 21 ++-- login_server/Dockerfiles/build_and_run.sh | 9 ++ 3 files changed, 82 insertions(+), 75 deletions(-) create mode 100644 login_server/Dockerfiles/build_and_run.sh diff --git a/docker-compose.override.yml b/docker-compose.override.yml index 97cdb3155..f59316396 100644 --- a/docker-compose.override.yml +++ b/docker-compose.override.yml @@ -1,63 +1,64 @@ -version: "3.4" - -services: - ######################################################## - # FRONTEND ############################################# - ######################################################## - frontend: - image: gradido/frontend:development - build: - target: development - environment: - - NODE_ENV="development" - # - DEBUG=true - - NUXT_BUILD=/tmp/nuxt # avoid file permission issues when `rm -rf .nuxt/` - volumes: - # This makes sure the docker container has its own node modules. - # Therefore it is possible to have a different node version on the host machine - - frontend_node_modules:/app/node_modules - # bind the local folder to the docker to allow live reload - - ./frontend:/app - - ######################################################### - ## LOGIN SERVER ######################################### - ######################################################### - login-server: - build: - target: login_server_debug - dockerfile: Dockerfile.debug - security_opt: - - seccomp:unconfined - cap_add: - - SYS_PTRACE - volumes: - - ./logs:/var/log/grd_login - - conan:/root/.conan - - ######################################################### - ## NGINX ################################################ - ######################################################### - nginx: - volumes: - - ./logs:/var/log/nginx - - ######################################################### - ## PHPMYADMIN ########################################### - ######################################################### - phpmyadmin: - image: phpmyadmin - container_name: phpmyadmin - environment: - - PMA_ARBITRARY=1 - #restart: always - ports: - - 8074:80 - networks: - - internal-net - - external-net - volumes: - - /sessions - -volumes: - frontend_node_modules: - conan: \ No newline at end of file +version: "3.4" + +services: + ######################################################## + # FRONTEND ############################################# + ######################################################## + frontend: + image: gradido/frontend:development + build: + target: development + environment: + - NODE_ENV="development" + # - DEBUG=true + - NUXT_BUILD=/tmp/nuxt # avoid file permission issues when `rm -rf .nuxt/` + volumes: + # This makes sure the docker container has its own node modules. + # Therefore it is possible to have a different node version on the host machine + - frontend_node_modules:/app/node_modules + # bind the local folder to the docker to allow live reload + - ./frontend:/app + + ######################################################### + ## LOGIN SERVER ######################################### + ######################################################### + login-server: + build: + target: login_server_debug + dockerfile: Dockerfile.debug + security_opt: + - seccomp:unconfined + cap_add: + - SYS_PTRACE + volumes: + - ./logs:/var/log/grd_login + - ./login_server/src:/code/src + - login_build:/code/build_vol + + ######################################################### + ## NGINX ################################################ + ######################################################### + nginx: + volumes: + - ./logs:/var/log/nginx + + ######################################################### + ## PHPMYADMIN ########################################### + ######################################################### + phpmyadmin: + image: phpmyadmin + container_name: phpmyadmin + environment: + - PMA_ARBITRARY=1 + #restart: always + ports: + - 8074:80 + networks: + - internal-net + - external-net + volumes: + - /sessions + +volumes: + frontend_node_modules: + login_build: \ No newline at end of file diff --git a/login_server/Dockerfile.debug b/login_server/Dockerfile.debug index 6c72821fa..4c9945f8c 100644 --- a/login_server/Dockerfile.debug +++ b/login_server/Dockerfile.debug @@ -24,8 +24,8 @@ USER root #COPY --from=debug_preparation /code /code #COPY --from=debug_preparation /home/conan /home/conan #RUN ls -la /home/conan/.conan -COPY . . WORKDIR ${DOCKER_WORKDIR} +COPY . . #RUN ls -la #RUN cat build/conanbuildinfo.cmake @@ -34,18 +34,15 @@ RUN chmod +x compile_pot.sh #RUN ls -la RUN ./compile_pot.sh RUN ./compile_proto.sh -RUN cd build && \ - cmake -DCMAKE_BUILD_TYPE=Debug .. && \ - make -j$(nproc) Gradido_LoginServer + ######################################################################################################### # run debug ######################################################################################################### -FROM ubuntu:latest as login_server_debug - -WORKDIR "/usr/bin" +FROM debug as login_server_debug +ENV DOCKER_WORKDIR="/code" #RUN apt-get update && \ # apt-get install -y --no-install-recommends gdb && \ # apt-get autoclean && \ @@ -54,17 +51,17 @@ WORKDIR "/usr/bin" # rm -rf /var/lib/apt/lists/* VOLUME /var/log/grd_login +VOLUME /code/src -COPY --from=debug /code/build/bin/Gradido_LoginServer /usr/bin/ -COPY --from=debug /code/build/lib/libmariadb.so.3 /usr/lib/ -#COPY start_after_mysql.sh . -RUN chmod +x /usr/bin/Gradido_LoginServer EXPOSE 1200 EXPOSE 1201 +WORKDIR ${DOCKER_WORKDIR} +RUN chmod +x ./Dockerfiles/build_and_run.sh + #ENTRYPOINT ["/usr/bin/Gradido_LoginServer"] # Wait on mariadb to started #CMD ["sleep 5", "/usr/bin/Gradido_LoginServer"] #RUN chmod +x ./start_after_mysql.sh #ENTRYPOINT ["/usr/bin/Gradido_LoginServer"] #CMD gdb -ex=r Gradido_LoginServer -CMD Gradido_LoginServer +CMD ./Dockerfiles/build_and_run.sh diff --git a/login_server/Dockerfiles/build_and_run.sh b/login_server/Dockerfiles/build_and_run.sh new file mode 100644 index 000000000..ee9999532 --- /dev/null +++ b/login_server/Dockerfiles/build_and_run.sh @@ -0,0 +1,9 @@ +#!/bin/bash +cp build/conan* build_vol/ +cd build_vol + +cmake -DCMAKE_BUILD_TYPE=Debug .. +make -j$(nproc) Gradido_LoginServer +echo "building done" +chmod +x ./bin/Gradido_LoginServer +./bin/Gradido_LoginServer