wildfly-extras / wildfly-jar-maven-plugin

WildFly Bootable JAR
https://docs.wildfly.org/bootablejar/
Apache License 2.0
56 stars 40 forks source link

Please allow some kind of cache for the sake of docker builds #367

Open weltonrodrigo opened 11 months ago

weltonrodrigo commented 11 months ago

Hi.

The following Dockerfile would work wonderfully if we somehow could cache the deps for the wildfly-jar-maven-plugin in the dependencies phase.

Something like mvn wildfly-jar:go-offline.


FROM maven:3-openjdk-11 as dependencies

WORKDIR /opt/app
COPY pom.xml /opt/app

# Download deps (this layer gets cached)
RUN mvn -Dmaven.repo.local=/opt/app/m2  --no-transfer-progress  \
    de.qaware.maven:go-offline-maven-plugin:resolve-dependencies

# Application build
FROM maven:3-openjdk-11 as build

WORKDIR /opt/app

# Copy deps from `dependencies` phase

COPY --from=dependencies /opt/app/m2 /opt/app/m2

# copy files need to build the application
COPY scripts /opt/app/scripts
COPY pom.xml /opt/app/
COPY src/ /opt/app/src/

# Do the build 
# Unfortunately 😢 the deps for the wildfly jar plugin are not cached in the first phase
# resulting in 296 files being downloaded everytime
RUN mvn -Dmaven.repo.local=/opt/app/m2 package -B --no-transfer-progress

FROM openjdk:11-jdk-slim as assemble

# App artifact
COPY --from=build /opt/app/target/*.jar /app/app.jar

ENTRYPOINT ["/usr/local/openjdk-11/bin/java", "-jar", "/app/app.jar"]

Had we any way to download all dependencies based on the pom.xml, the docker workflow would be much better.