【发布时间】:2021-08-09 18:32:34
【问题描述】:
我有一个简单的spring boot server,结构如下:
.
├── Dockerfile
├── HELP.md
├── demo.iml
├── mvnw
├── mvnw.cmd
├── pom.xml
├── src
│ ├── main
│ │ ├── java
│ │ │ └── com
│ │ │ └── example
│ │ │ └── demo
│ │ │ ├── DemoApplication.java
│ │ │ ├── Employee.java
│ │ │ ├── EmployeeResource.java
│ │ │ ├── exceptions
│ │ │ │ └── UserNotFoundException.java
│ │ │ ├── repo
│ │ │ │ └── EmployeeRepo.java
│ │ │ └── service
│ │ │ ├── DockerFile
│ │ │ └── EmployeeService.java
│ │ └── resources
│ │ ├── META-INF
│ │ │ └── MANIFEST.MF
│ │ ├── application.properties
│ │ ├── static
│ │ └── templates
│ └── test
│ └── java
│ └── com
│ └── example
│ └── demo
│ └── DemoApplicationTests.java
└── target
├── classes
│ ├── META-INF
│ │ └── MANIFEST.MF
│ ├── application.properties
│ └── com
│ └── example
│ └── demo
│ ├── DemoApplication.class
│ ├── Employee.class
│ ├── EmployeeResource.class
│ ├── exceptions
│ │ └── UserNotFoundException.class
│ ├── repo
│ │ └── EmployeeRepo.class
│ └── service
│ └── EmployeeService.class
├── demo.jar
├── generated-sources
│ └── annotations
├── generated-test-sources
│ └── test-annotations
└── test-classes
└── com
└── example
└── demo
└── DemoApplicationTests.class
还有我的 Dockerfile:
FROM "ANYONMOUS REPO" as builder
USER root
COPY src /src
ADD target/demo.jar demo.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","demo.jar"]
此服务器在本地运行时工作正常,但是当我创建一个 docker 映像并尝试运行它时,我收到以下错误:
Error: Could not find or load main class com.example.demo.DemoApplication.
我不确定如何在包本身中定位主类,我尝试在我的 Dockerfile 中使用这个命令:
CMD java -classpath src/java com.example.demo 试图定位这个包,但我仍然得到同样的错误。有没有不同的方法来定位 Jar 文件和 Docker 中的主类?
【问题讨论】:
-
DemoApplication有@SpringBootApplication? -
是的!引导服务器通过 intellij 在我的机器上运行良好,没有错误。
-
尝试从命令行运行它
-
你如何构建那个 jar?做同样的事。 1) 构建 jar 2) 尝试运行
java -jar demo.jarwithout docker -
我同意@Eugene,你如何在主机上运行它?通过诸如 Eclipse 之类的 IDE?我相信它会为您构建一个可执行的 .jar,您必须自己在 Dockerfile 中完成
标签: java spring spring-boot docker