首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java/spring-在用pack和paketobuildpacks/builder构建的映像中,引导/分级错误的入口点:base

java/spring-在用pack和paketobuildpacks/builder构建的映像中,引导/分级错误的入口点:base
EN

Stack Overflow用户
提问于 2022-02-25 11:17:16
回答 1查看 238关注 0票数 0

我有一个非常简单的java spring应用程序。当我从源生成图像时,使用:

pack build testapp:0.0.1 --builder paketobuildpacks/builder:base

然后尝试使用docker运行它,我得到以下错误:

ERROR: failed to launch: determine start command: when there is no default process a command is required

此图像中生成的入口点是"/cnb/lifecycle/launcher"

当我使用pack inspect-image检查图像时,没有进程。

我在不同的java spring-boot gradle应用程序中尝试了这种方法。当我使用"bootBuildImage“级任务时,它做的几乎是一样的,但是使用了预构建的..jar文件,并且结果映像工作。该图像中生成的入口点是"/cnb/process/web"pack inspect-image显示了三个进程。

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-28 13:59:47

我看不到你的构建输出,但听起来你好像遇到了一个已知的问题。如果这不是您的问题,请包括运行pack build的全部输出。

在这个问题上。默认情况下,项目将同时构建一个可执行的和不可执行的JAR。因为这会产生两个JAR文件,所以它目前混淆了buildpack。

有几种解决方案:

  1. 告诉Gradle不要构建不可执行的JAR。。buildpack需要可执行的JAR。您可以通过在build.gradle文件中添加以下内容来做到这一点: jar { enabled = false } 这就是我们有在Paketo构建包示例中使用的解决方案。
  2. 如果不想进行#1中建议的更改,那么可以向pack build添加以下参数:-e BP_GRADLE_BUILT_ARTIFACT=build/libs/<your-jar>.jar。例如:-e BP_GRADLE_BUILT_ARTIFACT=build/libs/demo-0.0.1-SNAPSHOT.jar。您可以在这里使用glob样式的模式匹配,但是您需要确保输入的内容与*-plain.jar不匹配。这将是默认构建的不可执行的JAR。 这个选项只是简单地告诉Gradle buildpack,更具体地说,JAR文件要传递给后续的buildpack。

我们还有一个尚未解决的问题,应该有助于减轻这一问题。当使用可执行-jar构建包获得了对多个jar的支持。时,不太可能需要设置它。实质上,该填充将添加支持,以便可执行JAR构建包能够检查和检测可执行JAR,这将允许它抛出-plain.jar文件,因为它是不可执行的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71265067

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档