如何解决错误:使用打包为.war的springboot在Docker容器中找不到或使用gradle加载主类
错误: 无法在Docker容器中找到或加载主类com.company.endeavour.server.HelloController
我使用Gradle构建Java 8应用程序,并尝试使用spring boot 2.2.4,将应用程序作为.war打包在Docker容器中,并将该容器部署到Kube集群中。
我觉得我已经尝试了一切,但无法解决此问题,因此我伸出了更多的眼睛。我将Spring Boot 1 Web服务转换为Spring Boot2。SpringBoot 1一切正常,并且我的代码今天在生产中正常运行(除了旧版本的Spring)。为了简化起见,我将代码与一个基本的主类配对,直到可以工作为止。
当我在IDE中运行代码并运行bootRun任务时,代码运行正常
build.gradle:
buildscript {
repositories {
mavenLocal()
}
dependencies {
classpath "org.springframework.boot:spring-boot-gradle-plugin:2.2.4.RELEASE"
}
plugins {
id 'java'
id 'war'
id 'application'
id 'org.springframework.boot' version '2.2.6.RELEASE'
}
java {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
dependencies {
testCompile group: 'junit',name: 'junit',version: '4.+'
compile group: 'org.springframework.boot',name: 'spring-boot-starter-web',version: '2.2.4.RELEASE'
compile group: 'org.springframework.boot',name: 'spring-boot-starter-actuator',version: '2.2.4.RELEASE'
}
application {
mainClassName = "com.company.endeavour.server.HelloController"
}
bootRun {
jvmArgs = ["-Dspring.profiles.active=local","-Xms1024m","-Xmx4096m"]
}
distTar.archiveFileName = 'endeavour-server.tar'
defaultTasks 'bootRun'
war {
enabled = true
}
checkstyle {
sourceSets = []
}
这是Dockerfile:
FROM openjdk-docker-image:1.4.0-8
RUN groupadd -r -g 1001 endeavour && \
useradd -l -m -r -u 1001 -g 1001 endeavour
USER endeavour
WORKDIR /home/endeavour
# ADD --chown does not change ownership of files copied!
# Ref: https://github.com/moby/moby/issues/35525
COPY build/distributions/endeavour-server.tar ./
RUN tar xf ./endeavour-server.tar && rm -f ./endeavour-server.tar
EXPOSE 8080
ENTRYPOINT ./endeavour-server/bin/endeavour-server
这是目录结构: src / main / java / com / company / endeavour / server / HelloController.java
构建docker容器后,我运行: docker运行endeavour-server: 我得到:
Error: Could not find or load main class com.company.endeavour.server.HelloController
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。