From e4914a839fa5bb2d34fff550ab1f9aeceef49a2a Mon Sep 17 00:00:00 2001 From: bivashy Date: Thu, 28 Aug 2025 12:38:02 +0500 Subject: [PATCH 1/2] Use retrofit and other mandatory libraries, add `.env` --- .env | 1 + .env.example | 1 + pom.xml | 22 ++++++++++++++++--- .../anyame/bff/AnyameVueBffApplication.java | 10 ++++++--- src/main/resources/application.properties | 2 ++ 5 files changed, 30 insertions(+), 6 deletions(-) create mode 100644 .env create mode 100644 .env.example diff --git a/.env b/.env new file mode 100644 index 0000000..cb0912e --- /dev/null +++ b/.env @@ -0,0 +1 @@ +SERVER_PORT=8090 diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..cb0912e --- /dev/null +++ b/.env.example @@ -0,0 +1 @@ +SERVER_PORT=8090 diff --git a/pom.xml b/pom.xml index f233738..05940c8 100644 --- a/pom.xml +++ b/pom.xml @@ -29,6 +29,10 @@ 21 + + 3.0.0 + 4.0.0 + 2.8.9 2025.0.0 @@ -56,10 +60,22 @@ org.springframework.cloud spring-cloud-starter-netflix-eureka-server - - org.springframework.cloud - spring-cloud-starter-openfeign + + + com.squareup.retrofit2 + converter-jackson + ${retrofit.version} + + me.paulschwarz + spring-dotenv + ${spring-dotenv.version} + + + org.springdoc + springdoc-openapi-starter-webmvc-ui + ${springdoc-openapi-starter.version} + org.springframework.boot diff --git a/src/main/java/com/backend/extractor/kodik/service/anyame/bff/AnyameVueBffApplication.java b/src/main/java/com/backend/extractor/kodik/service/anyame/bff/AnyameVueBffApplication.java index 2a7a60b..c343950 100644 --- a/src/main/java/com/backend/extractor/kodik/service/anyame/bff/AnyameVueBffApplication.java +++ b/src/main/java/com/backend/extractor/kodik/service/anyame/bff/AnyameVueBffApplication.java @@ -2,12 +2,16 @@ package com.backend.extractor.kodik.service.anyame.bff; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cache.annotation.EnableCaching; +import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; @SpringBootApplication +@EnableCaching +@EnableEurekaServer public class AnyameVueBffApplication { - public static void main(String[] args) { - SpringApplication.run(AnyameVueBffApplication.class, args); - } + public static void main(String[] args) { + SpringApplication.run(AnyameVueBffApplication.class, args); + } } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index a778c20..4983d05 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1 +1,3 @@ spring.application.name=anyame-vue-bff +server.port=${SERVER_PORT} +eureka.client.serviceUrl.defaultZone=http://localhost:${SERVER_PORT}/eureka/ From d02af27a1ac9c2bca9a2de823eaceb72d14ded66 Mon Sep 17 00:00:00 2001 From: bivashy Date: Thu, 28 Aug 2025 17:24:13 +0500 Subject: [PATCH 2/2] Add Dockerfile and compose.yml --- Dockerfile.prod | 50 +++++++++++++++++++++++++++++++++++++++++++++++++ compose.yml | 11 +++++++++++ 2 files changed, 61 insertions(+) create mode 100644 Dockerfile.prod create mode 100644 compose.yml diff --git a/Dockerfile.prod b/Dockerfile.prod new file mode 100644 index 0000000..e0f53b9 --- /dev/null +++ b/Dockerfile.prod @@ -0,0 +1,50 @@ +# Build +FROM maven:3.9.6-eclipse-temurin-21 AS builder +WORKDIR /workspace +COPY pom.xml . +RUN mvn dependency:go-offline -B +COPY src ./src +RUN mvn clean package -DskipTests + +# Create optimized runtime +FROM eclipse-temurin:21 AS app-build +ENV RELEASE=21 + +WORKDIR /opt/build +COPY --from=builder /workspace/target/*.jar ./application.jar + +RUN java -Djarmode=layertools -jar application.jar extract +RUN $JAVA_HOME/bin/jlink \ + --add-modules $(jdeps --ignore-missing-deps -q -recursive --multi-release ${RELEASE} --print-module-deps -cp 'dependencies/BOOT-INF/lib/*' application.jar),jdk.crypto.ec,jdk.security.auth,jdk.crypto.cryptoki \ + --strip-debug \ + --no-man-pages \ + --no-header-files \ + --compress=2 \ + --output jdk + +# Run +FROM debian:bookworm-slim + +ARG BUILD_PATH=/opt/build +ENV JAVA_HOME=/opt/jdk +ENV PATH="${JAVA_HOME}/bin:${PATH}" + +RUN groupadd --gid 1000 spring-app \ + && useradd --uid 1000 --gid spring-app --shell /bin/bash --create-home spring-app + +RUN apt-get update && \ + apt-get install -y --no-install-recommends ca-certificates && \ + rm -rf /var/lib/apt/lists/* + +USER spring-app:spring-app +WORKDIR /opt/workspace + +COPY --from=app-build $BUILD_PATH/jdk $JAVA_HOME +COPY --from=app-build $BUILD_PATH/spring-boot-loader/ ./ +COPY --from=app-build $BUILD_PATH/dependencies/ ./ +COPY --from=app-build $BUILD_PATH/snapshot-dependencies/ ./ +COPY --from=app-build $BUILD_PATH/application/ ./ + +EXPOSE 8080/tcp +ENTRYPOINT ["java", "org.springframework.boot.loader.launch.JarLauncher"] + diff --git a/compose.yml b/compose.yml new file mode 100644 index 0000000..4050c19 --- /dev/null +++ b/compose.yml @@ -0,0 +1,11 @@ +services: + vue-bff: + image: anyame-vue-bff:latest + ports: + - 8090:8080 + env_file: .env + networks: + - anyame +networks: + anyame: + driver: bridge