Add template for java docker images

main
Nils Gerstner 2 years ago
parent 486e3d68e6
commit 9f9d09cc9c

@ -0,0 +1,41 @@
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"]

@ -6,3 +6,4 @@ All compose files assume that the containers are run behind a reverse proxy, tha
* **gitea** - Git repository server
* **thea** - Online IDE
* **wallabag** - Read later app
* **Dockerfile.customJRE** - Create a image from a maven java project with custom JRE

Loading…
Cancel
Save