You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
docker/Dockerfile.customJRE

42 lines
1.5 KiB

FROM alpine:3.17 as BUILD
RUN apk add --no-cache binutils maven openjdk17-jdk
WORKDIR /build
COPY pom.xml .
RUN mvn dependency:go-offline
COPY src/ /build/src/
RUN export BUILD_DIRECTORY="$(mvn help:evaluate -Dexpression='project.build.directory' -q -DforceStdout)" && \
export BUILD_NAME="$(mvn help:evaluate -Dexpression='project.build.finalName' -q -DforceStdout)" && \
mvn package && \
mkdir unpacked && \
cd unpacked && \
unzip /build/target/${BUILD_NAME}.jar && \
cd .. && \
mkdir -p /build/unpacked/BOOT-INF/lib && \
cp ${BUILD_DIRECTORY}/${BUILD_NAME}.lib/*.jar /build/unpacked/BOOT-INF/lib/ && \
jdeps \
--ignore-missing-deps \
--print-module-deps \
-q \
--recursive \
--multi-release 17 \
--class-path="./unpacked/BOOT-INF/lib/*" \
--module-path="./unpacked/BOOT-INF/lib/*" \
${BUILD_DIRECTORY}/${BUILD_NAME}.jar > ${BUILD_DIRECTORY}/deps.info && \
jlink \
--verbose \
--add-modules $(cat ${BUILD_DIRECTORY}/deps.info) \
--strip-debug \
--no-man-pages \
--no-header-files \
--compress=2 \
--output ./jre && \
echo -e "#!/bin/sh\n" \
"/opt/jre/bin/java -jar ${BUILD_NAME}.jar" \
> ${BUILD_DIRECTORY}/run.sh && \
chmod 700 ${BUILD_DIRECTORY}/run.sh
FROM alpine:3.17
COPY --from=BUILD /build/target/ /opt/target/
COPY --from=BUILD /build/jre /opt/jre
WORKDIR /opt/target
ENTRYPOINT ["./run.sh"]