You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker部署Tomcat9:管理页面无法访问及根路径404问题排查

问题分析与修复方案

一、应用根路径404的解决方法

你的WAR包默认部署路径是localhost:8080/amazonlite-1.0-SNAPSHOT/,而非根路径/,这是Tomcat的默认行为。要映射到根路径,有两种简单方式:

  • 方法1:重命名WAR包为ROOT.war
    修改Dockerfile中的COPY命令,把WAR包重命名为Tomcat默认的根应用名:
    COPY --from=build /deploy/target/amazonlite-1.0-SNAPSHOT.war /usr/local/tomcat/webapps/ROOT.war
    
    这样启动后直接访问localhost:8080就能打开你的应用。
  • 方法2:配置Tomcat Context映射
    在项目中新建conf/server.xml,修改Host节点添加Context配置:
    <Host name="localhost"  appBase="webapps"
          unpackWARs="true" autoDeploy="true">
      <Context path="" docBase="amazonlite-1.0-SNAPSHOT" reloadable="true"/>
    </Host>
    
    然后在Docker Compose中挂载这个配置文件:
    volumes:
      - ./conf/server.xml:/usr/local/tomcat/conf/server.xml
    

另外,先确认WAR包是否正常构建:可以进入构建阶段的容器,检查/deploy/target/amazonlite-1.0-SNAPSHOT.war是否存在,或者解压WAR包查看内部结构是否符合Servlet规范(必须包含WEB-INF目录,且里面有web.xml或正确的注解配置)。

二、Tomcat Manager无法访问的修复

官方Tomcat镜像默认禁用了Manager应用,需要配置用户权限和访问限制:

  1. 添加用户权限
    新建conf/tomcat-users.xml,配置具备Manager权限的用户:
    <?xml version="1.0" encoding="UTF-8"?>
    <tomcat-users xmlns="http://tomcat.apache.org/xml"
                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                  xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
                  version="1.0">
      <user username="admin" password="admin" roles="manager-gui,admin-gui"/>
    </tomcat-users>
    
  2. 解除本地访问限制
    新建conf/manager-context.xml,注释掉IP限制的Valve配置:
    <Context antiResourceLocking="false" privileged="true" >
      <!--
      <Valve className="org.apache.catalina.valves.RemoteAddrValve"
             allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
      -->
    </Context>
    
  3. 在Docker Compose中挂载配置
    把上述两个配置文件挂载到容器对应的路径:
    volumes:
      - ./conf/tomcat-users.xml:/usr/local/tomcat/conf/tomcat-users.xml
      - ./conf/manager-context.xml:/usr/local/tomcat/webapps/manager/META-INF/context.xml
    

三、完整Docker Compose示例

version: '3.8'
services:
  amazonlite-app:
    build: .
    ports:
      - "8080:8080"
    volumes:
      - ./conf/tomcat-users.xml:/usr/local/tomcat/conf/tomcat-users.xml
      - ./conf/manager-context.xml:/usr/local/tomcat/webapps/manager/META-INF/context.xml
      # 如果用server.xml映射根路径,取消下面注释
      # - ./conf/server.xml:/usr/local/tomcat/conf/server.xml

内容的提问来源于stack exchange,提问作者chhu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 13:20:24