From 867edab39ccc0609fc3aa7aa20237906f4d27ee0 Mon Sep 17 00:00:00 2001 From: bivashy Date: Sat, 12 Jul 2025 18:13:09 +0500 Subject: [PATCH] Optimize dockerfile and add docker compose --- Dockerfile.prod | 32 +++++++++++++++++++++++--------- compose.yml | 11 +++++++++++ 2 files changed, 34 insertions(+), 9 deletions(-) create mode 100644 compose.yml diff --git a/Dockerfile.prod b/Dockerfile.prod index 4ff0a18..562d6a6 100644 --- a/Dockerfile.prod +++ b/Dockerfile.prod @@ -1,26 +1,40 @@ +# 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 ./target/*.jar ./application.jar +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` \ - --strip-debug \ - --no-man-pages \ - --no-header-files \ - --compress=2 \ - --output jdk + --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 -FROM debian:buster-slim +# 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 + && 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 diff --git a/compose.yml b/compose.yml new file mode 100644 index 0000000..a686b61 --- /dev/null +++ b/compose.yml @@ -0,0 +1,11 @@ +services: + extractor: + image: anyame-extractor:latest + ports: + - 8081:8080 + env_file: .env + networks: + - anyame +networks: + anyame: + driver: bridge