2017-12-18 176 views
0

我的春天啓動應用程序最初是使用Maven構建的,但是我想搖籃 - IFY它。我的構建過程的一部分是使用dockerfile-maven插件製作碼頭圖像。最接受的gradle等價物似乎是com.palantir.docker,所以這就是我正在使用的(至少根據this tutorial from pivotal。)Gradle:指定最終的spring-boot jar文件的正確方法是什麼?

我的設置非常簡單。我的dockerfile需要一個構建參數,這是最終的jar,並將其添加到圖像。

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" 

讓我餓的部分是gradle setup。我通過構建ARG出現正確的:每當我試圖建立圖像

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"]) 
} 

不過,我得到以下錯誤,即使實際Java構建成功:

$ 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 

我已經嘗試了無數的組合試圖指定./build/libs/pauls-blog-0.0.1-SNAPSHOT.jar的路徑(相對於我的項目),我可以看到存在,而上面的打印目錄沒有。

顯然有一些我不認識的gradle左右建造,能有人清理如何得到最終的jar文件?

回答

0

我已經解決了這個問題,但我不知道爲什麼,這是不同的,所以我要離開打開,有人有機會作出詳細的解釋,爲什麼這個工程的問題。

的正確值應該引用jar.archivePath。 所以最終結果如下所示:

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