Tomcat 中把自己的项目部署成根目录 Tomcat技术
- 创建时间:2023-02-27 / 最新修改时间:2023-02-27 09:22:07
- 1144
- 0
转载请注明本文出处:http://limpire.cn/artifact/heap/web/214.html
环境
使用了 Docker ,镜像为 tomcat:jdk11-openjdk . 经查阅这个镜像的tomcat版本是9.0.
简单部署javaWeb项目
如果把war把上传到tomcat的webapps上,tomcat会自动解包。
例如 把 bar.war 上传到webapps上,将会被tomcat自动解压,从而多了一个bar文件夹。
然后我们可以打开 http://localhost:8080/bar
来访问我们的项目。
把自己项目设置为根
一般来说如果用docker容器部署项目,一个tomcat运行一个项目就够了。
于是有了我们想把 http://localhost:8080/bar
变成http://localhost:8080
。
- 首先删除 webapps下的ROOT目录,这是tomcat默认的根路径。
- 找到conf/server.xml 中的
标签。 - 在这个标签下添加一个子元素
具体配置如下:
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
<Context path="" docBase="web" reloadable="false" />
</Host>
<Context path="" docBase="web" reloadable="false" />
- 当path="" 时,则表示这是tomcat的默认url路径,也就是 http://localhost:8080/
- docBase 就是你的web项目的文件夹,这里用了相对路径,相对appBase下的路径,也就是 webapps/web,也可以用绝对路径。
-
这里记录一下踩坑记,docBase 的名字尽量复杂,不要和@RequestMapping中的路径有冲突。 例如:
控制器中有 @RequestMapping("web/index"); 然后docBase="web"也设置成了 web.
那么当访问 http://localhost:8080/web/index 时候会出错。需要访问 http://localhost:8080/web/web/index 才能访问得到。
-
- 重启tomcat。
重启后你会发现,在webapps文件夹中又多了一个ROOT文件夹,里面放的是你的项目的文件。 现在我们可以直接通过 http://localhost:8080/ 访问我们的项目。