Java 尝试部署简单hello spring启动应用程序时出现Tomcat 404错误

Java 尝试部署简单hello spring启动应用程序时出现Tomcat 404错误,java,spring-boot,docker,spring-mvc,tomcat,Java,Spring Boot,Docker,Spring Mvc,Tomcat,我想我也有类似的问题,但不知道如何解决 我正在尝试使用docker和Tomcat构建简单的hello world spring boot应用程序。我用maven创建了war文件,然后将其放入$CATALINA_HOME/webapps/并通过执行[“CATALINA.sh”,“run”]启动服务器。但我仍然无法访问我的应用程序 错误: HTTP Status 404 – Not Found Type Status Report Message /demo/ Description T

我想我也有类似的问题,但不知道如何解决

我正在尝试使用docker和Tomcat构建简单的hello world spring boot应用程序。我用maven创建了war文件,然后将其放入$CATALINA_HOME/webapps/并通过执行[“CATALINA.sh”,“run”]启动服务器。但我仍然无法访问我的应用程序

错误:

HTTP Status 404 – Not Found

Type Status Report

Message /demo/

Description The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.

Apache Tomcat/9.0.2
Tomcat说,我的应用程序正在运行

我试图提出另一个请求,以避免错误的映射 http://localhost:8888/demo/hello http://localhost:8888/hello

主要类别代码:

@SpringBootApplication
@RestController
public class DemoApplication extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(DemoApplication.class);
    }
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

    @GetMapping("/hello")
    public String hello() {
        return "Hello";
    }

}
Dockerfile

#
# for build
#
FROM maven:3.6.3-jdk-11-slim AS MAVEN_TOOL_CHAIN

COPY pom.xml /tmp/

COPY src /tmp/src/

WORKDIR /tmp/

RUN mvn package


#
# for deploy
#
FROM tomcat:9.0-alpine

MAINTAINER "admin"

USER root

# to get access to admin page
COPY /tomcat-users.xml $CATALINA_HOME/conf/tomcat-users.xml
COPY /settings.xml $CATALINA_HOME/conf/settings.xml
COPY /context.xml /usr/local/tomcat/webapps/manager/META-INF/

WORKDIR $CATALINA_HOME/webapps/

COPY --from=MAVEN_TOOL_CHAIN /tmp/target/demo-0.0.1-SNAPSHOT.war ./demo.war

EXPOSE 8080

CMD ["catalina.sh", "run"]

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.4.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>
    <name>demo</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>11</java.version>
        <start-class>com.example.demo.DemoApplication</start-class>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>


您正在使用的tomcat映像使用
jdk8
作为java版本,但是您正在构建的war使用
java11
。所以tomcat没有部署你的应用程序。 只需使用tomcat jdk11映像,您的应用程序就会开始工作。
您可以使用此图像

FROM tomcat:9.0-jdk11
为了减少漏洞,docker映像中的webapps文件夹将为空,但管理器和其他操作所需的文件夹将存储在
webapps.dist
文件夹中。因此,如果您需要管理器和主页ui,只需将项目从
webapps.dist
复制到
webapps
目录

RUN cp -r $CATALINA_HOME/webapps.dist/* $CATALINA_HOME/webapps/

我改变了tomcat的版本。现在我也有同样的错误,但不仅仅是当我尝试访问我的应用程序时,我在访问tomcat主页时也会遇到。对不起,我把请求搞糟了。现在我的应用程序正在运行。但我无法进入tomcat的主页和管理页面,是因为这个图像版本还是我的错?
RUN cp -r $CATALINA_HOME/webapps.dist/* $CATALINA_HOME/webapps/