spring - 无法在 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.movies 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>
解决方案
您可以使用默认的嵌入式 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}
推荐阅读
- performance - webpack 包更新导致包大小增加问题
- reactjs - 如何使用 Firebase 云消息在我的电容器应用程序中停止通知垃圾邮件
- javascript - 尝试使用 HTML 和 JAVASCRIPT 将复选框列表与多个功能链接
- javascript - player.stop 不停止不和谐音乐机器人
- bubble-sort - 如何在冒泡排序示例中调用 dafny 中的引理?
- ads - 无效的客户数据。检查 SOAP 故障详细信息以获取更多信息。TrackingId:bc4ceb42-6127-49a6-b72d-29c75b2e3885
- ios - AVSpeechSynthesizer 使用电话扬声器而不是底部扬声器播放声音
- python - Python pandas查询和差异迭代问题
- azure-devops - Azure DevOps 查询:获取特定人员在特定时间范围内更改的项目列表
- javascript - 取消预定的通知博览会