Created
September 10, 2022 19:59
-
-
Save figonzal1/99d6af5a555fd8c644dd3b5db01edad0 to your computer and use it in GitHub Desktop.
Multi stage docker file with multi-layer spring boot and automatic gradle build (3 Stages - build, extract and boot)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# GRADLE BUILD - DOCKER STAGE | |
FROM gradle:7.5.1-jdk17-alpine as builder | |
ENV APP_HOME=/app | |
WORKDIR $APP_HOME | |
COPY build.gradle settings.gradle $APP_HOME | |
COPY gradle $APP_HOME/gradle | |
COPY --chown=gradle:gradle . /home/gradle/src | |
USER root | |
RUN chown -R gradle /home/gradle/src | |
RUN gradle build || return 0 | |
# SPRING BOOT EXTRACT LAYER - DOCKER STAGE | |
# REF: https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#container-images.dockerfiles | |
FROM ibm-semeru-runtimes:open-17.0.4.1_1-jdk-jammy as extracter | |
ENV JAR_FILE=myapp.jar | |
ENV APP_HOME=/app | |
WORKDIR $APP_HOME | |
COPY --from=builder $APP_HOME/build/libs/$JAR_FILE . | |
RUN java -Djarmode=layertools -jar $JAR_FILE extract | |
# BOOTJAR SPRING BOOT WITH UNPACK JAR - DOCKER STAGE | |
# REF: https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#container-images.efficient-images.unpacking | |
FROM ibm-semeru-runtimes:open-17.0.4.1_1-jre-jammy | |
ENV APP_HOME=/app | |
WORKDIR $APP_HOME | |
RUN adduser --no-create-home --disabled-password springuser | |
USER springuser:springuser | |
COPY --from=extracter $APP_HOME/dependencies/ ./ | |
COPY --from=extracter $APP_HOME/spring-boot-loader/ ./ | |
COPY --from=extracter $APP_HOME/snapshot-dependencies/ ./ | |
COPY --from=extracter $APP_HOME/application/ ./ | |
ENTRYPOINT ["java","-cp","BOOT-INF/classes:BOOT-INF/lib/*","com.example.MyMainClass"] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment