文章目录
- 一. 问题背景
- 二. 报错的原因
- 三. 解决方案
一. 问题背景
操作系统: Linux
情况:使用Linux上的Docker创建Tomcat容器,已经指定了映射端口,但是启动Tomcat容器后,在本地电脑访问tomcat首页,出现404报错,如下:
参考自:
- SpringBoot 入坑(六)Docker 整合 Tomcat 启动&&访问404异常解决
- Docker方式启动tomcat,访问首页出现404错误
二. 报错的原因
因为配置了阿里云的Docker加速下载,所以下载下来后,创建的Tomcat容器中的webapps目录中,没有资源,所以会报404错误。而所需的资源是在webapps.dist中。
三. 解决方案
首先查看当前出现问题的Tomcat容器,使用docker ps
,如下:
使用docker exec -it 出现问题的容器ID /bin/bash
进入tomcat容器,如下:
输入ls -l
,如下:
输入cd webapps
,里面确实没有tomcat首页所需要的资源,如下
输入cd ../
,再输入cd webapps.dist
,里面确实有tomcat首页所需要的资源,如下:
使用cd ../
返回上层目录,使用rm -rf webapps
删除webapps目录,使用mv webapps.dist webapps
将webapps.dist改成webapps即可,如下:
到这里就可以访问成功了,但是这只是暂时性的解决了问题,如果用出现问题的这个tomcat容器的镜像,再创建出几个tomcat容器,这些新的tomcat容器仍是会访问不到首页会报404。要彻底解决这个问题就要将修改配置后的tomcat容器打包成一个镜像,到时候直接使用这个配置好的镜像就不会有404问题。
继续下面的步骤:
看不懂下图的话,可以跳过这个图:
如果用的是XShell,或者其他客户端,可以不使用上面的ctrl+p+q,可以直接创建多个窗口,就直接进入主机模式了 ,如下:
然后使用docker ps
查看出现问题的那个tomcat容器,然后使用docker commit -a='随意内容' -m='随意内容’ 出现问题的容器ID 全是小写字母的新镜像的名字
,如下:
使用docker images
查看刚刚创建的镜像,如下:
使用docker run -d -p 8888:8080 新镜像的ID
用刚刚自定义的镜像创建新的tomcat容器,如下:
使用docker rm 出现问题的容器ID
删除有问题的容器,如下:
到此已经从本质上解决访问tomcat容器首页报错。
有问题的伙伴可留言。