77 lines
1.9 KiB
Docker
77 lines
1.9 KiB
Docker
FROM eclipse-temurin:24 AS build
|
|
|
|
WORKDIR /build
|
|
|
|
# Create as small a runtime as possible but Spring/Tomcat needs a lot of modules
|
|
RUN jlink \
|
|
--output jre \
|
|
--add-modules java.sql,java.desktop,java.management,java.naming,java.security.jgss,java.instrument
|
|
|
|
COPY pom.xml mvnw ./
|
|
COPY .mvn .mvn
|
|
|
|
RUN ./mvnw dependency:copy-dependencies \
|
|
--activate-profiles=!persistent \
|
|
--define includeScope=compile \
|
|
--define outputDirectory=lib
|
|
|
|
RUN ./mvnw dependency:build-classpath \
|
|
--activate-profiles=!persistent \
|
|
--define includeScope=compile \
|
|
--define mdep.outputFile=classpath \
|
|
--define mdep.prefix=lib
|
|
|
|
COPY src src
|
|
|
|
RUN ./mvnw compile
|
|
|
|
FROM eclipse-temurin:24 AS training
|
|
|
|
WORKDIR /build
|
|
COPY --from=build /build/jre jre
|
|
COPY --from=build /build/lib lib
|
|
COPY --from=build /build/classpath classpath
|
|
COPY --from=build /build/target/classes classes
|
|
|
|
# There can be no directories on the classpath when training
|
|
RUN cd classes && jar -cf /build/app.jar *
|
|
|
|
# Adds the new jar to the classpath
|
|
RUN echo ":app.jar" >> classpath
|
|
|
|
RUN [ "./jre/bin/java" \
|
|
, "-cp", "@classpath" \
|
|
, "-XX:AOTMode=record" \
|
|
, "-XX:AOTConfiguration=app.aotconf" \
|
|
, "se.su.dsv.oauth2.Training" \
|
|
, "--spring.profiles.active=dev,embedded" \
|
|
]
|
|
|
|
RUN [ "./jre/bin/java" \
|
|
, "-cp", "@classpath" \
|
|
, "-XX:AOTMode=create" \
|
|
, "-XX:AOTConfiguration=app.aotconf" \
|
|
, "-XX:AOTCache=app.aot" \
|
|
, "se.su.dsv.oauth2.Training" \
|
|
, "--spring.profiles.active=dev,embedded" \
|
|
]
|
|
|
|
FROM debian:stable-slim AS runtime
|
|
|
|
WORKDIR /app
|
|
|
|
COPY --from=training /build/jre jre
|
|
COPY --from=training /build/lib lib
|
|
COPY --from=training /build/classpath classpath
|
|
COPY --from=training /build/app.jar app.jar
|
|
COPY --from=training /build/app.aot app.aot
|
|
|
|
EXPOSE 8080
|
|
|
|
CMD [ "./jre/bin/java" \
|
|
, "-cp", "@classpath" \
|
|
, "-XX:AOTCache=app.aot" \
|
|
, "se.su.dsv.oauth2.AuthorizationServer" \
|
|
, "--spring.profiles.active=dev,embedded" \
|
|
]
|