Dockerfile创建Spring Boot映像

时间:2019-11-18 06:16:10

标签: spring-boot docker gradle microservices

我想为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构建步骤? 还有目标/依赖关系/将在哪里创建?

2 个答案:

答案 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并尝试吗?它将起作用。