返回 导航

Docker / K8s

hangge.com

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)

回到顶部