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

Docker部署Tomcat中JAX-RS Rest服务访问报404错误求助

Docker环境下Tomcat REST服务404问题解决指南

问题背景

你在Docker容器中部署Tomcat后,访问http://192.168.99.100:8080/rest/clients出现HTTP Status 404 – Not Found错误,但本地直接运行Tomcat时,通过http://localhost:8080/rest/clients能正常访问服务。你的docker-compose.yml片段如下:

version: '3'
services:
  tomcat:
    container_name: tomcat_docker
    image: tomcat:latest
    environment:
      - TOMCAT_USERNAME=admin
      - TOMCAT_PASSWORD=secret
    ports:
      - 8080:8080
    volumes:
      - /docker/AW317/Taskman...

下面是几个最可能的原因和对应的解决步骤:


1. 应用挂载路径错误(最常见)

官方Tomcat镜像的默认应用部署目录是/usr/local/tomcat/webapps,你需要确保本地的应用文件(war包或解压后的应用目录)正确挂载到这个路径下。

从你的volumes配置看路径不完整,补全后应该是这样:

volumes:
  # 如果是本地解压好的应用目录,挂载到webapps下的对应上下文路径
  - /docker/AW317/Taskman:/usr/local/tomcat/webapps/Taskman
  # 或者如果是war包,直接挂载到webapps目录,Tomcat会自动解压
  # - /docker/AW317/Taskman.war:/usr/local/tomcat/webapps/Taskman.war
  • 如果你的应用是ROOT应用(本地访问时不需要上下文路径),要挂载到webapps/ROOT目录:
    volumes:
      - /docker/AW317/Taskman:/usr/local/tomcat/webapps/ROOT
    

挂载完成后重启容器,访问路径要对应上下文:比如挂载到Taskman,就访问http://192.168.99.100:8080/Taskman/rest/clients;如果是ROOT,就用原来的路径。

2. 检查容器内应用是否正常部署

进入容器查看webapps目录,确认应用存在且已被Tomcat加载:

# 进入容器查看webapps内容
docker exec -it tomcat_docker ls -l /usr/local/tomcat/webapps

如果应用没被解压,可能是Tomcat自动部署未开启,或者文件权限有问题。可以手动查看Tomcat的部署日志定位问题:

docker exec -it tomcat_docker tail -f /usr/local/tomcat/logs/catalina.out

日志里会明确告诉你部署失败的具体原因(比如依赖缺失、配置文件错误等)。

3. 端口映射与宿主机IP验证

  • 先确认容器内Tomcat的8080端口是否在监听:
    docker exec -it tomcat_docker netstat -tulpn | grep 8080
    
  • 再检查宿主机的8080端口是否被其他进程占用:
    # Linux/macOS
    netstat -tulpn | grep 8080
    # Windows
    netstat -ano | findstr :8080
    
  • 另外,192.168.99.100是Docker Machine的IP吗?如果用的是Docker Desktop(Windows/Mac),可以直接用localhost访问试试:http://localhost:8080/rest/clients,如果能访问,说明你用错了宿主机IP。

4. 容器内文件权限问题

如果挂载的应用目录/文件权限不对,Tomcat可能无法读取,导致部署失败。可以修改挂载时的权限:

volumes:
  - /docker/AW317/Taskman:/usr/local/tomcat/webapps/Taskman:ro

或者进入容器手动修改权限:

docker exec -it tomcat_docker chown -R tomcat:tomcat /usr/local/tomcat/webapps/Taskman

按照上面的步骤排查,应该能找到问题所在。如果还有疑问,可以把完整的docker-compose.yml和Tomcat日志片段贴出来,方便进一步分析。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:42:06