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.
42 lines
1.5 KiB
42 lines
1.5 KiB
2 years ago
|
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"]
|