From 2b0f816633ecb0a39b1ff457852e2a464ae774ef Mon Sep 17 00:00:00 2001 From: bivashy Date: Sat, 12 Jul 2025 18:15:55 +0500 Subject: [PATCH] Optimize Dockerfile and add docker compose --- Dockerfile.prod | 33 +++++++++++++++++++++++---------- compose.yml | 11 +++++++++++ 2 files changed, 34 insertions(+), 10 deletions(-) create mode 100644 compose.yml diff --git a/Dockerfile.prod b/Dockerfile.prod index 20132f5..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 @@ -33,4 +47,3 @@ 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..ee8be2a --- /dev/null +++ b/compose.yml @@ -0,0 +1,11 @@ +services: + search: + image: anyame-search:latest + ports: + - 8080:8080 + env_file: .env + networks: + - anyame +networks: + anyame: + driver: bridge