44 lines
1.2 KiB
Docker
44 lines
1.2 KiB
Docker
FROM maven:3.6.3-jdk-14 as builder
|
|
|
|
WORKDIR /tmp
|
|
|
|
# Cache dependencies
|
|
COPY pom.xml .
|
|
COPY app/pom.xml app/pom.xml
|
|
COPY domain/pom.xml domain/pom.xml
|
|
COPY persistance/pom.xml persistance/pom.xml
|
|
COPY shared/pom.xml shared/pom.xml
|
|
|
|
RUN mvn verify clean --fail-never
|
|
|
|
COPY app/src app/src
|
|
COPY domain/src domain/src
|
|
COPY persistance/src persistance/src
|
|
COPY shared/src shared/src
|
|
|
|
RUN mvn -Dstyle.color=always package
|
|
|
|
FROM openjdk:14-alpine as jdkbuilder
|
|
|
|
COPY --from=builder /tmp/app/target/app-*.jar /app/app.jar
|
|
|
|
ENV MODULES java.base,java.compiler,java.desktop,java.instrument,java.logging,java.management,java.naming,java.scripting,java.security.jgss,java.sql,java.sql.rowset,java.transaction.xa,java.xml,jdk.net
|
|
|
|
RUN jlink --output /myjdk --module-path $JAVA_HOME/jmods --add-modules $MODULES
|
|
|
|
FROM alpine
|
|
|
|
ENV APPLICATION_USER simplenotes
|
|
RUN adduser -D -g '' $APPLICATION_USER
|
|
|
|
RUN mkdir /app
|
|
RUN chown -R $APPLICATION_USER /app
|
|
|
|
USER $APPLICATION_USER
|
|
|
|
COPY --from=builder /tmp/app/target/app-*.jar /app/app.jar
|
|
COPY --from=jdkbuilder /myjdk /myjdk
|
|
WORKDIR /app
|
|
|
|
CMD ["/myjdk/bin/java", "-server", "-XX:+UnlockExperimentalVMOptions", "-Xms256m", "-Xmx1g", "-XX:+UseG1GC", "-XX:MaxGCPauseMillis=100", "-XX:+UseStringDeduplication", "-jar", "app.jar"]
|