我试图在 Tomcat Docker 容器中部署一个 war 文件,但总是得到404 Not Found
页。我通过以下方式创建了 Spring Boot 项目Intellij 教程 https://www.jetbrains.com/help/idea/your-first-spring-application.html,并且在我本地的机器上运行良好。
这是我的 Dockerfile:
FROM tomcat:latest
ADD WebTutorial.war /usr/local/tomcat/webapps/ROOT.war
我使用以下命令来构建映像并运行容器:
$ docker build -t sp-tomcat .
$ docker run -it -p 8080:8080 --name sp-tomcat sp-tomcat
After the container is running, I logged into the container and see the war file has been deployed (I suppose):
这是日志输出:
21-Dec-2021 07:41:35.819 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version name: Apache Tomcat/10.0.14
21-Dec-2021 07:41:35.821 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built: Dec 2 2021 22:01:36 UTC
21-Dec-2021 07:41:35.821 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version number: 10.0.14.0
21-Dec-2021 07:41:35.821 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name: Linux
21-Dec-2021 07:41:35.822 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version: 5.10.76-linuxkit
21-Dec-2021 07:41:35.822 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture: aarch64
21-Dec-2021 07:41:35.822 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home: /usr/local/openjdk-11
21-Dec-2021 07:41:35.822 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version: 11.0.13+8
21-Dec-2021 07:41:35.822 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor: Oracle Corporation
21-Dec-2021 07:41:35.822 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE: /usr/local/tomcat
21-Dec-2021 07:41:35.822 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME: /usr/local/tomcat
21-Dec-2021 07:41:35.829 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.lang=ALL-UNNAMED
21-Dec-2021 07:41:35.829 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.io=ALL-UNNAMED
21-Dec-2021 07:41:35.829 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.util=ALL-UNNAMED
21-Dec-2021 07:41:35.829 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.util.concurrent=ALL-UNNAMED
21-Dec-2021 07:41:35.829 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
21-Dec-2021 07:41:35.829 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties
21-Dec-2021 07:41:35.829 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
21-Dec-2021 07:41:35.829 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdk.tls.ephemeralDHKeySize=2048
21-Dec-2021 07:41:35.829 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources
21-Dec-2021 07:41:35.829 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dorg.apache.catalina.security.SecurityListener.UMASK=0027
21-Dec-2021 07:41:35.830 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dignore.endorsed.dirs=
21-Dec-2021 07:41:35.830 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=/usr/local/tomcat
21-Dec-2021 07:41:35.830 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=/usr/local/tomcat
21-Dec-2021 07:41:35.830 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=/usr/local/tomcat/temp
21-Dec-2021 07:41:35.831 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent Loaded Apache Tomcat Native library [1.2.31] using APR version [1.7.0].
21-Dec-2021 07:41:35.832 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true], UDS [true].
21-Dec-2021 07:41:35.833 INFO [main] org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL successfully initialized [OpenSSL 1.1.1k 25 Mar 2021]
21-Dec-2021 07:41:35.979 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"]
21-Dec-2021 07:41:35.990 INFO [main] org.apache.catalina.startup.Catalina.load Server initialization in [268] milliseconds
21-Dec-2021 07:41:36.018 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service [Catalina]
21-Dec-2021 07:41:36.018 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet engine: [Apache Tomcat/10.0.14]
21-Dec-2021 07:41:36.024 INFO [main] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive [/usr/local/tomcat/webapps/ROOT.war]
21-Dec-2021 07:41:36.576 INFO [main] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
21-Dec-2021 07:41:36.596 INFO [main] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive [/usr/local/tomcat/webapps/ROOT.war] has finished in [572] ms
21-Dec-2021 07:41:36.599 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
21-Dec-2021 07:41:36.607 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in [617] milliseconds
但当我尝试通过浏览器查看该网站时却没有运气。谁能告诉我我错过了什么?
问题是您正在尝试在尚不支持的 Tomcat 10 上运行 Spring Boot 2.x 应用程序。 Tomcat 10 最大的变化之一是
作为 Java EE 向 Eclipse 基金会转移的一部分,从 Java EE 迁移到 Jakarta EE,所有已实现 API 的主包已从 javax.* 更改为 jakarta.*。这几乎肯定需要更改代码以使应用程序能够从 Tomcat 9 及更早版本迁移到 Tomcat 10 及更高版本。
所以Spring框架使用的所有API都是基于旧的javax.*
和新的jakarta.*
将于 2022 年底在 Spring Framework 6 和 Spring Boot 3 中得到支持))更多详细信息here https://github.com/spring-projects/spring-framework/issues/25354
你需要做的只是调整 Dockerfile 来运行 Tomcat 9 的应用程序。如果你使用的是 Java 17,这个就可以工作
FROM tomcat:9.0-jre17-temurin
ADD WebTutorial.war /usr/local/tomcat/webapps/ROOT.war
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)