【发布时间】:2021-02-20 04:07:48
【问题描述】:
我有一个大学项目,其中包括构建一个 Java Spring Boot 应用程序,该应用程序可以处理多个 API,这些 API 可以启动运行 jar 应用程序的新 docker 容器。
目前,我能够试验 Spring Boot 的工作原理,因此我构建了一个简单的 jar 来部署一个简单的问候 API,该 API 返回“Hello World!”
所以我已经使用 jib-core 构建了一个 docker 映像并将其推送到我的 DockerHub 存储库,它工作正常。
public static void main(String[] args) throws InvalidImageReferenceException, IOException, InterruptedException, ExecutionException, RegistryException, CacheDirectoryCreationException {
Jib.from("openjdk:15")
.addLayer(Arrays.asList(Paths.get("apps/demo-0.0.1-SNAPSHOT.jar")), AbsoluteUnixPath.get("/"))
.setEntrypoint("java", "demo-0.0.1-SNAPSHOT.jar")
.containerize(
Containerizer.to(RegistryImage.named("dmh911/localkube:latest")
.addCredential("username", "password")));
}
问题是,当我执行以下命令docker run -i -t dmh911/localkube:latest 时,我得到了这个错误:
Error: Could not find or load main class demo-0.0.1-SNAPSHOT.jar
Caused by: java.lang.ClassNotFoundException: demo-0.0.1-SNAPSHOT.jar
这是 jar 清单文件:
Manifest-Version: 1.0
Created-By: Maven Jar Plugin 3.2.0
Build-Jdk-Spec: 15
Implementation-Title: demo
Implementation-Version: 0.0.1-SNAPSHOT
Main-Class: org.springframework.boot.loader.JarLauncher
Start-Class: com.example.restservice.DemoApplication
Spring-Boot-Version: 2.3.4.RELEASE
Spring-Boot-Classes: BOOT-INF/classes/
Spring-Boot-Lib: BOOT-INF/lib/
Spring-Boot-Classpath-Index: BOOT-INF/classpath.idx
我知道问题可能是非常愚蠢的,但我不知道具体是什么。
【问题讨论】:
标签: java docker maven jib maven-jib