如何在 Docker 容器中运行 Apache Tomcat?

阅读时长 6 分钟读完

Apache Tomcat 是一款常用的 Java Web 应用服务器。在前端开发中,有时需要将前后端分离,使用 Tomcat 来部署前端应用。而 Docker 是一种快速部署应用的方式,能够让我们更方便地将应用部署到各种环境中。本文将介绍如何在 Docker 容器中运行 Apache Tomcat。

准备工作

在开始部署 Tomcat 的 Docker 容器之前,需要先准备好以下工具和知识:

  1. Docker 工具的安装,Docker 官方网站提供了各个系统的安装包,可以根据自己的系统版本下载安装。

  2. Apache Tomcat 的安装包,可以在 Tomcat 官方网站下载,这里进行的是 Tomcat 8.5.69 版本的安装。

  3. 基本的 Tomcat 配置知识,包括目录结构,配置文件等。如果没有相关知识可以先学习相关教程。

构建 Docker 镜像

在准备工作完成之后,我们可以开始构建 Tomcat 的 Docker 镜像。

首先,在 Tomcat 的解压目录下新建一个 Dockerfile 文件,内容如下:

-- -------------------- ---- -------
---- ----------

---------- ----- ---------------

--- -------------- ------
--- ------------- -----------------
--- ---- ------------------------

--- ------- ------ -
    -- ------- ------- -- ---- -
    -- ---- ------------------------------------------------------------------------------------------------------------ -
    -- --- --- ------------------------------------ -
    -- -- ----------------------------- -------------- -
    -- -- ------------------------------------ -
    -- ------- ---------- -- ---- -
    -- ------- ----- -- -
    -- -- --- -------------------- ------ ----------

------ ----

--- --------------- ------

以上 Dockerfile 中,我们使用 Java 8 作为基础镜像,然后安装 wget 工具,下载 Tomcat 安装包,解压并移动到指定目录下,并清理安装包,最后配置 Tomcat 的启动命令。Dockerfile 中的 CMD 命令会在容器启动时运行,即启动 Tomcat。

使用以下命令来构建 Docker 镜像:

其中,-t 指定镜像名称和版本,而.表示使用当前目录下的 Dockerfile 文件。

运行 Docker 容器

构建完 Tomcat Docker 镜像后,我们可以使用以下命令运行 Docker 容器:

  • --name:指定容器名称为 tomcat
  • -p:将容器的 8080 端口映射到主机的 8080 端口上
  • -d:指定容器在后台运行
  • tomcat:8.5.69:使用上一步构建的 Tomcat Docker 镜像

运行以上命令后,我们可以在本地浏览器访问 http://localhost:8080/,即可看到 Tomcat 的默认欢迎界面,表示 Tomcat 在 Docker 容器中成功运行。

配置 Tomcat

在 Docker 容器中运行 Tomcat,如果不进行任何配置的话,可能会出现一些问题。例如,如果我们需要将 War 包放到 Tomcat 中运行,就需要进行一些额外的配置。

我们可以将 War 包放到 Docker 容器中,并在 Dockerfile 文件中进行相应的配置。

在 Dockerfile 中添加以下内容:

其中,将 path/to/your/webapp.war 改成你的 War 包路径。

接下来,我们需要为 War 包配置上下文路径。在 Tomcat 中,一个 Web 应用对应一个上下文(Context),而上下文路径就是相对于 Web 应用的路径。默认情况下,Tomcat 会将上下文路径设置为 Web 应用的名称。

如果我们不配置上下文路径,那么我们在访问容器中的 War 包时,需要使用 War 包名称作为路径,例如 http://localhost:8080/mywebapp.war。不过,在大多数情况下,我们需要将 War 包所在的根路径映射到我们的网站根路径。因此,我们需要为 War 包设置一个上下文路径。

我们可以修改 Dockerfile 并重新构建镜像,设置 War 包的上下文路径,例如:

-- -------------------- ---- -------
--- ----------------------- --------------------------------------

--- -- -------------------------- -
    -- -- --- ---- -
    -- ----- ---- -
    -- -- ---- -
    -- --- --- --------------- -
    -- -- --- --------------- -
    -- --- -- --------------------- ------------- -------------------- -
    -- --- -- --------------- ---------------

以上 Dockerfile 中,我们首先添加 War 包路径,重建 ROOT 目录并解压 War 包,然后将上下文路径配置为空字符,最后修改该容器的 Tomcat 端口为 8090。因此,在运行容器时,我们需要将主机的 8090 端口映射到容器的 8090 端口。

总结

本文介绍了如何在 Docker 容器中运行 Apache Tomcat,包括了 Dockerfile 构建镜像和运行容器。除此之外,还介绍了如何配置 Tomcat,为 War 包设置上下文路径。这些步骤在实际的前端开发中都是常见的,掌握了这些知识之后,就能够更加方便地进行前后端分离的开发。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64c609514908f32798b215dd

纠错
反馈