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

Docker部署Tomcat启动成功后访问站点返回404错误是什么原因?

Docker部署Tomcat站点访问返回404问题排查

问题背景

你提供的Dockerfile内容如下:

FROM tomcat
ADD . ./webapps
EXPOSE 1234

CMD ["catalina.sh", "run"]

构建日志显示镜像构建、容器部署流程均正常,但访问http://192.168.99.100:1234/index返回404错误,常见原因如下:

具体原因及修复方案

  • Tomcat默认端口不匹配
    官方Tomcat镜像默认服务监听端口为8080,Dockerfile中的EXPOSE 1234仅为端口声明,不会修改Tomcat自身的监听配置,容器内Tomcat实际运行在8080端口。如果启动容器时端口映射配置为1234:1234,则无法访问到Tomcat服务。
    修复方案:启动容器时添加参数-p 1234:8080,将宿主机1234端口映射到容器内Tomcat默认的8080端口;也可以修改Tomcatconf/server.xml配置文件,将监听端口改为1234后再做对应映射。
  • 站点文件部署路径错误
    从构建日志可以看到实际执行了WORKDIR usr/local/tomcat/webapps+COPY . .操作,路径问题通常有两种情况:
    1. 新版官方Tomcat镜像默认webapps目录为空,默认站点文件存放在webapps.dist目录,未迁移文件直接访问会返回404
    2. 自定义站点资源如果直接放在webapps根目录,需要存放在ROOT子目录内才能通过站点根路径访问:如果你的首页文件是index.html,放在webapps/ROOT下需要访问/index.html路径,而非/index;如果站点资源存放在webapps/index子目录,才能通过/index路径访问
  • 端口映射未配置或配置错误
    EXPOSE指令不会自动完成宿主机到容器的端口映射,如果你启动容器时没有添加-p参数配置端口映射,宿主机无法通过1234端口访问到容器内的服务。
  • 站点文件权限不足
    COPY到容器内的站点文件如果权限配置不当,Tomcat运行用户没有读取权限,也会返回404错误,可进入容器执行chmod -R 755 /usr/local/tomcat/webapps修复权限。

内容的提问来源于stack exchange,提问作者Денис Задорожний

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 17:15:01