Docker - 通过容器部署Tomcat服务教程
作者:hangge | 2023-07-25 08:55
Tomcat 是一个开源的 Java Servlet 容器和 Web 服务器,由 Apache 软件基金会开发和维护。本文将通过样例介绍如何通过 Docker 来快速部署 Tomcat。
1,拉取镜像
(1)首先执行如下命令将最新版本的镜像下载到本地:
docker pull tomcat
(2)我们也可以根据需要下载指定的版本,具体可以到 docker 官网查看(点击访问):
2,启动容器
(1)执行如下命令实例化 Tomcat 服务:
参数说明:
- --name:指定容器名称
- -d:后台运行
- -p:将 tomcat 端口号映射到本地
- -v 将容器内的目录挂载到宿主机的指定目录(冒号前是宿主机目录)
docker run -d --name tomcat -p 8080:8080 -v /home/tomcat/webapps:/usr/local/tomcat/webapps tomcat
(2)容器启动后,使用浏览器访问 http://宿主机IP:8080,可以看到如下内容,说明 Tomcat 部署成功:
(3)显示 404 是因为 webapps 文件夹下目前是空的,内容都在 webapps.dist 目录下。我们可以执行如下命令将 webapps.dist 目录下的所有文件都复制到 webapps 文件夹下。
docker cp tomcat:/usr/local/tomcat/webapps.dist/. /home/tomcat
(4)再次使用浏览器访问 http://宿主机IP:8080,可以看到如下内容。
附:在高版本 Tomcat 下部署WAR包
(1)在使用 Tomcat 9 或更早的版本的 Tomcat 时,我们只需要把应用的 WAR 包放到 webapps 文件夹即可。但到了 Tomcat 10 以及之后的版本,如果还是同样操作会发现项目无法启动,访问报 404 错误。
(2)问题原因是 Apache Tomcat 10.0.5 开始的版本都是针对 Jakarta EE 规范,而 Tomcat 9 和更早的版本实现了作为 Java EE 的一部分开发的规范。因此,为 Tomcat 9 及更早版本开发的应用程序将无法在 Tomcat 10 上运行。
(3)解决办法是对于 Tomcat 10 以及之后的版本,我们运行容器时增加一个 webapps-javaee 目录的挂载。然后将 WAR 包放在 webapps-javaee 目录中,当 Tomcat 启动后会自动将它们转换为 Jakarta EE 并复制到 webapps 目录下,保证项目可以正常运行。
docker run -d --name tomcat -p 8080:8080 -v /home/tomcat/webapps:/usr/local/tomcat/webapps -v /home/tomcat/webapps-javaee:/usr/local/tomcat/webapps-javaee tomcat
全部评论(0)