首页 > 解决方案 > 无法在 docker 容器中运行我的 Spring Boot WAR 文件

问题描述

这是我的 Dockerfile:

FROM tomcat:8.0-alpine

运行 rm -rf /Users/firstname.lastname/Desktop/Backup/apache-tomcat-9.0.30/webapps/*

添加 ./target/restfullapi-0.0.1-SNAPSHOT.war /Users/firstname.lastname/Desktop/Backup/apache-tomcat-9.0.30/webapps/restfullapi.war

暴露 8089

CMD [“catalina.sh”,“运行”]


构建 .war 文件后,我将执行以下步骤:

docker build -t restfullapi.war 。docker run -d -p 8085:8089 restfullapi.war 现在,当我打开 localhost:8085 时,我只能看到正确的 tomcat 主页,但问题是如果我尝试访问 -->> localhost:8085/restfullapi /movies 我收到 404 错误。

这是我的 pom.xml


http://maven.apache.org/maven-v4_0_0.xsd"> 4.0.0 com.dev.movi​​es restfullapi war 0.0.1-SNAPSHOT RestFulAPI Maven Webapp http://maven.apache.org junit junit 3.8.1 测试

    <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>5.2.3.RELEASE</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.9.8</version>
    </dependency>

</dependencies>
<build>
    <finalName>restfullapi</finalName>
</build>

标签: springspring-bootdocker

解决方案


您可以使用默认的嵌入式 Tomcat 在 Docker 中运行 SpringBoot 应用程序。这避免了创建 WAR 文件并自己提供 Tomcat 的需要。

FROM adoptopenjdk/openjdk11:latest

RUN mkdir -p /software/app

ADD target/restfullapi.jar /software/app/restfullapi.jar

ENV port=8888

CMD java -jar /software/app/restfullapi.jar -Dspring.profiles.active=${SPRING_ACTIVE_PROFILE}

推荐阅读