如何在 Docker 容器中为 Tomcat Web 应用程序配置用户角色

DockerDockerBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

本教程将指导你完成在 Docker 容器中部署的 Tomcat Web 应用程序配置用户角色的过程。在本文结束时,你将更好地理解如何管理在 Docker 环境中运行的 Web 应用程序的用户访问和权限。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker(("Docker")) -.-> docker/DockerfileGroup(["Dockerfile"]) docker/ContainerOperationsGroup -.-> docker/run("Run a Container") docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/start("Start Container") docker/ContainerOperationsGroup -.-> docker/stop("Stop Container") docker/ContainerOperationsGroup -.-> docker/create("Create Container") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") docker/DockerfileGroup -.-> docker/build("Build Image from Dockerfile") subgraph Lab Skills docker/run -.-> lab-411520{{"如何在 Docker 容器中为 Tomcat Web 应用程序配置用户角色"}} docker/ls -.-> lab-411520{{"如何在 Docker 容器中为 Tomcat Web 应用程序配置用户角色"}} docker/ps -.-> lab-411520{{"如何在 Docker 容器中为 Tomcat Web 应用程序配置用户角色"}} docker/start -.-> lab-411520{{"如何在 Docker 容器中为 Tomcat Web 应用程序配置用户角色"}} docker/stop -.-> lab-411520{{"如何在 Docker 容器中为 Tomcat Web 应用程序配置用户角色"}} docker/create -.-> lab-411520{{"如何在 Docker 容器中为 Tomcat Web 应用程序配置用户角色"}} docker/pull -.-> lab-411520{{"如何在 Docker 容器中为 Tomcat Web 应用程序配置用户角色"}} docker/build -.-> lab-411520{{"如何在 Docker 容器中为 Tomcat Web 应用程序配置用户角色"}} end

Docker 与 Tomcat Web 应用程序简介

Docker 是一个广受欢迎的容器化平台,它允许开发者将应用程序及其依赖项打包成独立的、可移植的容器。另一方面,Tomcat 是一个广泛使用的开源 Java Servlet 和 JavaServer Pages(JSP)容器,它为 Java Web 应用程序提供了一个 Web 服务器环境。

什么是 Docker?

Docker 是一个软件平台,它使开发者能够在容器内构建、部署和管理应用程序。容器是轻量级的、独立的、可执行的包,其中包含运行应用程序所需的一切,包括代码、运行时环境、系统工具和库。这使得应用程序能够在从开发到生产的不同计算环境中轻松部署并一致地运行。

什么是 Tomcat?

Tomcat 是由 Apache 软件基金会开发的开源 Web 服务器和 Servlet 容器。它是托管基于 Java 的 Web 应用程序的热门选择,因为它为执行 Java Servlet 和渲染 JavaServer Pages(JSP)提供了一个运行时环境。Tomcat 以其可扩展性、性能和易用性而闻名,使其成为 Web 应用程序开发和部署中广泛采用的解决方案。

将 Tomcat 与 Docker 集成

将 Docker 和 Tomcat 结合使用为 Web 应用程序的开发和部署带来了诸多好处。通过将基于 Tomcat 的 Web 应用程序打包到 Docker 容器中,你可以确保在不同环境中实现一致且可靠的执行,简化部署过程,并利用 Docker 的功能,如资源隔离、版本控制和轻松扩展。

graph TD A[开发者] --> B[构建 Docker 镜像] B --> C[部署 Docker 容器] C --> D[Tomcat Web 应用程序]

在下一节中,我们将探讨如何为在 Docker 容器中部署的 Tomcat Web 应用程序配置用户角色。

为 Tomcat Web 应用程序配置用户角色

Tomcat 提供了一个灵活且可配置的用户认证和授权系统,它允许你管理 Web 应用程序的访问控制。在本节中,我们将探讨如何为在 Docker 容器中部署的 Tomcat Web 应用程序配置用户角色。

了解 Tomcat 用户角色

Tomcat 支持以下用户角色:

  • manager-gui:允许访问 Tomcat 的基于 Web 的管理界面。
  • manager-script:允许访问 Tomcat 的基于 Web 的管理界面,并额外提供对基于文本的界面的访问权限。
  • manager-jmx:允许访问 JMX 代理和基于文本的管理界面。
  • manager-status:允许访问 Tomcat 状态页面,该页面显示有关正在运行的 Tomcat 服务器的信息。
  • admin-gui:允许访问 Tomcat 的基于 Web 的管理界面,并额外提供对服务器配置的访问权限。
  • admin-script:允许访问 Tomcat 的基于 Web 的管理界面,并额外提供对服务器配置和基于文本的界面的访问权限。

在 Tomcat 中配置用户角色

要为 Docker 容器中的 Tomcat Web 应用程序配置用户角色,你需要执行以下步骤:

  1. 在 Tomcat 配置目录(通常为 /usr/local/tomcat/conf/)中创建一个 tomcat-users.xml 文件。
  2. tomcat-users.xml 文件中定义用户角色及其关联的权限。
  3. 基于官方 Tomcat 镜像构建一个自定义 Docker 镜像,并将 tomcat-users.xml 文件复制到适当的目录中。
  4. 在 Docker 容器中运行 Tomcat Web 应用程序,确保用户角色已正确配置。

以下是一个 tomcat-users.xml 文件的示例:

<?xml version="1.0" encoding="UTF-8"?>
<tomcat-users xmlns="http://tomcat.apache.org/xml"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd">
    <role rolename="manager-gui"/>
    <role rolename="manager-script"/>
    <role rolename="manager-jmx"/>
    <role rolename="manager-status"/>
    <role rolename="admin-gui"/>
    <role rolename="admin-script"/>
    <user username="admin" password="changeme" roles="manager-gui,manager-script,admin-gui,admin-script"/>
    <user username="tomcat" password="changeme" roles="manager-gui,manager-script"/>
</tomcat-users>

在下一节中,我们将讨论如何在 Docker 容器中部署 Tomcat Web 应用程序。

在 Docker 容器中部署 Tomcat Web 应用程序

在 Docker 容器中部署 Tomcat Web 应用程序涉及多个步骤,包括构建自定义 Docker 镜像、配置应用程序以及运行容器。在本节中,我们将指导你完成在 Docker 容器中部署 Tomcat Web 应用程序的过程。

构建自定义 Tomcat Docker 镜像

要在 Docker 容器中部署 Tomcat Web 应用程序,你需要基于官方 Tomcat 镜像创建一个自定义 Docker 镜像。以下是一个 Dockerfile 示例:

FROM tomcat:9.0-jdk11

## 将 Web 应用程序复制到 Tomcat 的 webapps 目录
COPY target/my-web-app.war /usr/local/tomcat/webapps/

## 复制 Tomcat 用户配置文件
COPY tomcat-users.xml /usr/local/tomcat/conf/

## 暴露 Tomcat 端口
EXPOSE 8080

## 启动 Tomcat
CMD ["catalina.sh", "run"]

在这个示例中,我们从带有 JDK 11 的官方 Tomcat 9.0 镜像开始,将 Web 应用程序 WAR 文件和 tomcat-users.xml 配置文件复制到相应的目录中,并暴露 Tomcat 端口(8080)。最后,我们使用 catalina.sh run 命令启动 Tomcat 服务器。

在 Docker 容器中运行 Tomcat Web 应用程序

构建自定义 Tomcat Docker 镜像后,你可以在 Docker 容器中运行 Tomcat Web 应用程序。以下是一个示例命令:

docker run -d -p 8080:8080 --name my-tomcat-app my-tomcat-image

此命令以分离模式(-d)运行 Tomcat Web 应用程序,并将容器的端口 8080 映射到主机的端口 8080(-p 8080:8080)。--name 选项为容器指定一个名称,最后一个参数指定自定义 Tomcat Docker 镜像的名称。

运行容器后,你可以通过打开 Web 浏览器并导航到 http://localhost:8080/my-web-app 来访问 Tomcat Web 应用程序。

graph TD A[开发者] --> B[构建自定义 Tomcat Docker 镜像] B --> C[在 Docker 容器中运行 Tomcat Web 应用程序] C --> D[访问 Tomcat Web 应用程序]

在本节中,你已经了解了如何在 Docker 容器中部署 Tomcat Web 应用程序,包括构建自定义 Docker 镜像和运行容器。通过遵循这些步骤,你可以确保基于 Tomcat 的 Web 应用程序实现一致且可靠的部署。

总结

在本 Docker 教程中,你已经学会了如何为部署在 Docker 容器中的 Tomcat Web 应用程序配置用户角色。通过了解管理用户访问和权限的步骤,你可以确保在 Docker 环境中运行的 Web 应用程序安全且只有合适的用户能够访问。