Docker 容器内部署 Nginx+Tomcat 的完整步骤

阅读时长 6 分钟读完

引言

随着现代化软件开发流程的不断演进,容器化技术在近年来开始成为一个必不可少的环节。其中,Docker 是一个非常受欢迎的容器化引擎,它可以快速地将应用程序打包成容器并运行在不同的计算机上,实现快速部署、可移植性及高度一致性等优势。

在本文中,我们将探讨在 Docker 容器中部署 Nginx 和 Tomcat 应用服务器的完整步骤。本文旨在提供深度的指导和学习意义,让读者们能深刻理解 Docker 容器在实际项目中的应用。

准备工作

在本文中,我们将使用 Docker 和 Docker Compose 来进行部署。因此,我们需要先安装这两个工具。

安装 Docker

Docker 官网提供了各种操作系统的安装包,可以前往 官网 新安装。

安装 Docker Compose

Docker Compose 是用于定义和运行多容器 Docker 应用程序的工具。同样可以在 Docker 官网下载。

创建 Docker 镜像

在部署之前,我们需要构建 Nginx 和 Tomcat 的 Docker 镜像。在这两个镜像中,Nginx 作为 Web 服务器将直接对外提供服务,而 Tomcat 作为应用服务器则提供服务的具体实现。

创建 Nginx 镜像

我们将创建一个基础镜像,其中包括了 Nginx 的所需的所有配置,该镜像使用 Alpine ,可以在 Docker 容器中快速启动。

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

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

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

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

在上述 Dockerfile 中,我们指定了镜像的基础镜像为 nginx:1.19-alpine;然后将我们本地的 nginx.conf 和 proxy.conf 配置文件复制到容器中;设置文件权限;并设置启动时的命令。

创建 Tomcat 镜像

我们将创建一个基础镜像,其中包含了 Tomcat 的所有配置,该镜像同样使用 Alpine 并且提供了 JDK 环境。

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

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

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

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

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

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

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

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

在上述 Dockerfile 中,我们指定了镜像的基础镜像为 tomcat:9.0.41-jdk8-corretto;然后在容器中创建了一个 webapps 目录,用于存放应用程序;安装了 maven,以用于构建 war 包并将其部署到 Tomcat 中;设置了应用程序启动时所需的环境变量;设置了 Tomcat 服务器的配置;设置了 WAR 包构建命令;并设置了启动命令。

构建 Docker 镜像

我们已经准备好了两个 Dockerfile,现在需要按照这两个文件来构建 Docker 镜像。

在终端界面中,进入到 Nginx Dockerfile 所在的目录,执行以下命令:

在终端界面中,进入到 Tomcat Dockerfile 所在的目录,执行以下命令:

在这两个命令中,我们使用了 -t 参数,用于指定 Docker 镜像的名称,其中,mynginx 和 mytomcat 分别代表了 Nginx 镜像和 Tomcat 镜像的名称。此外,当命令最后加一个圆点时,可以让 Docker 使用当前目录下的 Dockerfile 来编译镜像。

使用 Docker Compose 启动容器

在上述步骤中,我们已经成功构建了 Nginx 和 Tomcat 的 Docker 镜像,现在需要将它们打包成一个完整的应用。

在本文的例子中,我们将使用 Docker Compose 来启动容器。Docker Compose 可以通过简单的 YAML 配置文件来组织多个容器,并启动它们。以下是完整的 docker-compose.yml 配置文件:

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

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

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

在这个配置文件中,我们定义了两个服务:

  • nginx:作为 Web 服务器,通过端口 8080 对外提供服务。
  • tomcat:作为应用服务器,通过端口 8081 对外提供服务。

除此之外,我们还进行了一些配置:

  • volumes:将宿主机的文件夹挂载到容器中,以实现数据持久化。
  • ports:将容器中的端口映射到宿主机中的端口,并且通过代理服务器之间进行转发。

在终端界面中,进入到存放 docker-compose.yml 配置文件的目录,执行以下命令:

在这个命令中,我们使用了 -d 参数,它的作用是在后台运行。

测试

现在,我们已经成功启动了 Nginx 和 Tomcat。在我们的例子中,Nginx 将请求转发到了 Tomcat,并且 Tomcat 将应用部署到了 /app 目录下。

在浏览器中访问 http://localhost:8080 ,可以看到 Nginx 提供的默认网页。同时,访问 http://localhost:8001/app ,可以看到我们部署的应用程序。

总结

在本文中,我们详细地介绍了如何在 Docker 容器中部署 Nginx 和 Tomcat。我们创建了 Nginx 和 Tomcat 的 Docker 镜像,并使用 Docker Compose 启动了容器。

需要注意的是,在实际项目中,只有使用 Docker 氛围、应用程序较为复杂或者存在明确的需求时,才应该使用 Docker 容器;如果只是为了开发、测试或者学习,可以直接在本地环境中运行应用程序。

本文旨在提供深度的指导和学习意义,让读者们能深刻理解 Docker 容器在实际项目中的应用。

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

纠错
反馈