2017-12-18 1 views
0

Meine Spring-Boot-Anwendung wurde ursprünglich mit Maven erstellt, aber ich versuche, es zu groß zu machen. Teil meines Build-Prozesses war ein Docker-Image mit dem dockerfile-maven Plugin. Das am meisten akzeptierte Großbuchstaben-Äquivalent scheint der com.palantir.docker zu sein, also das, was ich benutze (zumindest nach this tutorial from pivotal.)Gradle: Was ist der richtige Weg, um die endgültige Spring-Boot-JAR-Datei anzugeben?

Mein Setup ist ziemlich einfach. Meine Dockerdatei nimmt ein Build-Argument, welches das letzte jar ist, und fügt es dem Bild hinzu.

FROM openjdk:8-jdk-alpine 
MAINTAINER github.com/paul-nelson-baker 
EXPOSE 5005 8080 35729 
ENTRYPOINT ["java", "-Xdebug", "-Xrunjdwp:server=y,transport=dt_socket,address=5005,suspend=n", "-jar", "/var/paulbaker/pauls-blog.jar"] 
ARG JAR_FILE 
ADD ${JAR_FILE} "/var/paulbaker/pauls-blog.jar" 

Der Teil, der mich aufgehängt wird, ist die Gradle-Setup. Der Build arg, dass ich passieren scheint richtig:

docker { 
    name = "paulbaker.io/my-blog" 
    tags 'latest' 
    dockerfile file('src/main/docker/Dockerfile') 
    files "${project.name}-${version}.jar" 
    buildArgs([JAR_FILE: "${project.name}-${version}.jar"]) 
} 

Allerdings, wenn ich das Bild zu bauen versuchen, ich folgende Fehlermeldung erhalten, obwohl die eigentliche Java Build erfolgreich:

$ gradle build docker 

> Task :docker FAILED 
ADD failed: stat /var/lib/docker/tmp/docker-builder952857277/pauls-blog-0.0.1-SNAPSHOT.jar: no such file or directory 

Ich habe versucht, ein Unzählige Kombinationen, um zu versuchen, den Pfad (relativ zu meinem Projekt) von ./build/libs/pauls-blog-0.0.1-SNAPSHOT.jar zu spezifizieren, den ich sehen kann, existiert, während das gedruckte Verzeichnis oben nicht tut.

Es gibt eindeutig etwas, das ich nicht verstehe über Gradle Builds, kann jemand klären, wie man die endgültige jar Datei erhält?

Antwort

0

Ich habe das Problem gelöst, aber ich weiß nicht, warum das anders ist, also lasse ich die Frage offen, damit jemand eine detaillierte Erklärung geben kann, warum das funktioniert.

Die korrekten Werte sollten sich auf jar.archivePath beziehen. Also das Endergebnis sieht so aus:

docker { 
    name = "paulbaker.io/my-blog" 
    tags 'latest' 
    dockerfile file('src/main/docker/Dockerfile') 
    files jar.archivePath 
    buildArgs([JAR_FILE: "${jar.archiveName}"]) 
} 
Verwandte Themen