From e8209143d97056db7809f12e6aa6c927d6a20836 Mon Sep 17 00:00:00 2001 From: Hubert Van De Walle Date: Thu, 7 May 2020 18:30:34 +0200 Subject: [PATCH] Build backend inside docker multi-stage build --- Makefile | 10 ---------- api/Dockerfile | 16 +++++++++++++++- generate-site.sh | 20 -------------------- start-db-dev.sh => start-dev.sh | 0 deploy.sh => start-prod.sh | 6 ------ 5 files changed, 15 insertions(+), 37 deletions(-) delete mode 100644 Makefile delete mode 100755 generate-site.sh rename start-db-dev.sh => start-dev.sh (100%) rename deploy.sh => start-prod.sh (78%) diff --git a/Makefile b/Makefile deleted file mode 100644 index a521317..0000000 --- a/Makefile +++ /dev/null @@ -1,10 +0,0 @@ -api_doc_output=public/index.html -api_blueprint_src=api-doc/api.apib -aglio_template=triple -aglio_theme=cyborg - -# API doc -gen-api-doc: - aglio -i $(api_blueprint_src) -o $(api_doc_output)\ - --theme-template=$(aglio_template) \ - --theme-variables=$(aglio_theme) diff --git a/api/Dockerfile b/api/Dockerfile index e63e870..8903a01 100644 --- a/api/Dockerfile +++ b/api/Dockerfile @@ -1,3 +1,17 @@ +FROM maven:3.6.3-jdk-13 as builder + +WORKDIR /tmp + +# Cache dependencies +COPY pom.xml . +RUN mvn verify clean --fail-never + +COPY resources resources +COPY src src +COPY test test + +RUN mvn package + FROM openjdk:13-alpine ENV APPLICATION_USER ktor @@ -8,7 +22,7 @@ RUN chown -R $APPLICATION_USER /app USER $APPLICATION_USER -COPY ./target/api-0.0.1-jar-with-dependencies.jar /app/notes-api.jar +COPY --from=builder /tmp/target/api-*-jar-with-dependencies.jar /app/notes-api.jar WORKDIR /app CMD ["java", "-server", "-XX:+UnlockExperimentalVMOptions", "-XX:InitialRAMFraction=2", "-XX:MinRAMFraction=2", "-XX:MaxRAMFraction=2", "-XX:+UseG1GC", "-XX:MaxGCPauseMillis=100", "-XX:+UseStringDeduplication", "-jar", "notes-api.jar"] \ No newline at end of file diff --git a/generate-site.sh b/generate-site.sh deleted file mode 100755 index 9307f72..0000000 --- a/generate-site.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/bash - -check_installed() { - if ! [ -x "$(command -v $1)" ]; then - echo "Error: $1 is not installed." >&2 - exit 1 - fi -} - -check_installed docker-compose -check_installed yarn - -docker-compose -f docker-compose.yml -f docker-compose.prod.yml stop nginx - -# Generate Nuxt.js static website -pushd frontend || exit 1 -yarn run generate -popd || exit 1 - -docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d --build nginx diff --git a/start-db-dev.sh b/start-dev.sh similarity index 100% rename from start-db-dev.sh rename to start-dev.sh diff --git a/deploy.sh b/start-prod.sh similarity index 78% rename from deploy.sh rename to start-prod.sh index b9babd2..9cdff67 100755 --- a/deploy.sh +++ b/start-prod.sh @@ -8,16 +8,10 @@ check_installed() { } check_installed docker-compose -check_installed yarn check_installed mvn docker-compose -f docker-compose.yml -f docker-compose.prod.yml down -# Generate Nuxt.js static website -pushd frontend || exit 1 -yarn run generate -popd || exit 1 - # Generate fat jar pushd api || exit 1 mvn clean package