我想为Spring Boot应用程序创建Docker映像,它使用gardle作为构建工具。
在bitbucket存储库中,我可以看到以下文件已放置
--> src
--> build.gradle
--> Dockerfile
--> gradlew
--> gradlew.bat
现在Dockerfile具有以下内容
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG DEPENDENCY=target/dependency
COPY ${DEPENDENCY}/BOOT-INF/lib /app/lib
COPY ${DEPENDENCY}/META-INF /app/META-INF
COPY ${DEPENDENCY}/BOOT-INF/classes /app
EXPOSE 8080
ENTRYPOINT ["java","-cp","app:app/lib/*","eds.billnq"]
当我尝试使用Dockerfile创建映像时出现错误
target/dependency/BOOT-INF library not found
target/dependency/META-INF library not found
我的查询是为什么在docker file中没有gradle构建步骤? 还有目标/依赖关系/将在哪里创建?
答案 0 :(得分:0)
为什么在docker文件中没有gradle构建步骤?
Dockerfile
似乎期望在构建Docker映像之前已经由Gradle构建了应用程序,并且所产生的类文件和jar在{{1 }}。
@WonChul Heo在评论中提到的Spring Boot Docker guide涉及如何使用Gradle(特别是插件target/dependency
)构建Docker映像。
还在哪里创建目标/依赖关系/?
我猜他们应该在您运行Gradle构建时创建,但是在不了解有关构建配置的更多信息的情况下,很难确定。
我建议您再次阅读该指南,并将其建议与代码库中的建议进行比较,尤其是Gradle构建定义。
最终,如果您从私有代码存储库中提取了代码,但又不知道如何构建代码,那么最好是向致力于代码库的人员咨询建议。比来自SO。
答案 1 :(得分:0)
使用Gradle时,将在build/libs/{Your jar}
内生成您的jar文件
可以将ARG DEPENDENCY=target/dependency
更改为ARG DEPENDENCY=build/libs
并尝试吗?它将起作用。