FROM eclipse-temurin:17-jdk-alpine as jre-build
RUN \
apk add --no-cache binutils
# generate a minimal JRE that includes only the necessary modules
RUN $JAVA_HOME/bin/jlink \
--add-modules java.base,java.desktop,java.management,java.instrument,java.naming \
--strip-debug \
--no-man-pages \
--no-header-files \
--compress=2 \
--output /jre
FROM alpine:3.15
ENV JAVA_HOME=/opt/java/openjdk
ENV PATH "${JAVA_HOME}/bin:${PATH}"
COPY --from=jre-build /jre $JAVA_HOME
ENV \
JETTY_VERSION=11.0.8 \
PLANTUML_VERSION=v1.2022.0 \
JETTY_HOME=/home/jetty/jetty-home \
JETTY_BASE=/home/jetty
RUN \
apk add --no-cache \
graphviz \
curl \
ttf-opensans && \
apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/testing font-roboto
RUN \
addgroup jetty && adduser -D -G jetty jetty
USER jetty
WORKDIR /home/jetty
RUN \
curl https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-home/${JETTY_VERSION}/jetty-home-${JETTY_VERSION}.tar.gz | gzip -d | tar xf - && \
java -jar ${JETTY_HOME}-${JETTY_VERSION}/start.jar --add-modules=http,jsp,deploy && \
curl --output webapps/plantuml.war https://github.com/plantuml/plantuml-server/releases/download/${PLANTUML_VERSION}/plantuml-${PLANTUML_VERSION}.war
EXPOSE 8080/tcp
HEALTHCHECK --interval=5m --timeout=5s CMD curl --fail http://localhost:8080/plantuml/txt/Iyv9B2vMA4ajBW40 || exit 1
CMD /opt/java/openjdk/bin/java -Xms128m -Xms256m -jar ${JETTY_HOME}-${JETTY_VERSION}/start.jar