Linux中使用Docker容器构建Tomcat容器完整教程

article/2025/8/14 2:23:57

 

🏡作者主页:点击! 

🐧Linux基础知识(初学):点击!

🐧Linux高级管理防护和群集专栏:点击!

🔐Linux中firewalld防火墙:点击!

⏰️创作时间:2024年9月19日15点13分


在现代应用程序开发中,容器化技术已成为一种重要的解决方案。Apache Tomcat 是一款广泛使用的开源 Java 应用服务器,适用于运行 Java Servlet 和 JSP 应用程序。本教程将详细介绍如何在 Docker 中构建并运行一个 Tomcat 容器,并提供相应的步骤和解释。

构建Tomcat容器

1.创建工作目录

首先,我们需要创建一个工作目录,用于存放 Dockerfile 和其他相关文件。打开终端并输入以下命令:

mkdir tomcat
cd tomcat

这将创建一个名为 tomcat 的新目录,并切换到该目录中。

2.创建Dockerfile文件

tomcat 目录内创建一个名为 Dockerfile 的文件。使用以下命令打开文件:

vim Dockerfile

在tomcat文件内创建

FROM centos:7# 清理默认的 yum 源并添加阿里云源
RUN rm -rf /etc/yum.repos.d/* \&& curl -o /etc/yum.repos.d/aliyun.repo https://mirrors.aliyun.com/repo/Centos-7.repo# 安装必要的工具和依赖
RUN yum install -y wget pcre-devel net-tools gcc gcc-c++ zlib zlib-devel make openssl-devel java-1.8.0-openjdk \&& yum clean all# 下载并安装 Apache Tomcat
RUN wget https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.16/bin/apache-tomcat-8.5.16.tar.gz \&& tar zxvf apache-tomcat-8.5.16.tar.gz \&& mv apache-tomcat-8.5.16 /usr/local/tomcat \&& rm -f apache-tomcat-8.5.16.tar.gz# 暴露 Tomcat 端口
EXPOSE 8080# 设置工作目录
WORKDIR /usr/local/tomcat# 添加并设置运行脚本
COPY run.sh /run.sh
RUN chmod +x /run.sh# 设置容器启动命令
CMD ["/run.sh"]

Dockerfile 解释:

  • FROM centos:7:指定基础镜像为 CentOS 7。
  • RUN 指令:执行一系列命令以清理默认的 yum 源并添加阿里云源,安装必要的工具和依赖项,包括 JDK 和 Tomcat。
  • EXPOSE 8080:暴露 Tomcat 的默认端口 8080,以便外部访问。
  • WORKDIR /usr/local/tomcat:设置工作目录为 Tomcat 的安装目录。
  • COPY run.sh /run.sh:将本地的 run.sh 脚本复制到容器中。
  • CMD ["/run.sh"]:设置容器启动时执行的命令。

3.编写执行脚本

在t在 tomcat 目录下创建一个名为 run.sh 的脚本文件:

vim run.sh

在文件中输入以下内容:

#!/bin/bash
/usr/local/tomcat/bin/startup.sh
tail -f /usr/local/tomcat/logs/catalina.out

脚本解释:

  • #!/bin/bash:指定脚本的解释器为 Bash。
  • /usr/local/tomcat/bin/startup.sh:启动 Tomcat 服务器。
  • tail -f /usr/local/tomcat/logs/catalina.out:实时查看 Tomcat 的日志输出,以便监控服务器状态。

确保脚本具有可执行权限:

chmod +x run.sh

4.生成镜像

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

docker build -t my-tomcat .

等待完成.

生成镜像解释:

  • docker build:构建新的镜像。
  • -t my-tomcat:为生成的镜像指定一个标签(名称)。
  • .:指定上下文目录,通常是 Dockerfile 所在的目录。

功能:根据当前目录中的 Dockerfile 构建一个新的镜像。参数:-t my-tomcat:为生成的镜像指定一个标签(名称)。.:指定上下文目录,通常是 Dockerfile 所在的目录。

5.运行容器并验证

[root@localhost tomact]# docker run -d -p 8080:8080 --name my-tomcat-container my-tomcat
07eca5a0845edcd1842dffaac71665b0bf5b5ca71115cd85049317c091d08bbf

功能:创建并启动一个新的容器。参数:-d:以分离模式运行容器(在后台运行)。-p 8080:8080:将主机的 8080 端口映射到容器的 8080 端口。--name my-tomcat-container:为容器指定一个名称。my-tomcat:使用的镜像名称。

6.访问 Tomcat 服务器

容器启动后,可以通过浏览器访问 Tomcat 服务器。打开浏览器,输入以下地址(根据你的服务器 IP 地址进行替换):

访问服务器的8080端口(根据你自己ip访问)

http://<你的IP地址>:8080

如果一切正常,你将看到 Tomcat 的欢迎页面。

总结

通过以上步骤,我们成功地在 Docker 中构建并运行了一个 Tomcat 容器。这个过程不仅展示了如何使用 Dockerfile 自动化构建过程,还展示了如何通过脚本管理 Tomcat 的启动和日志。这种容器化的方式使得应用程序的部署和管理变得更加高效和灵活。

功的路上没有捷径,只有不断的努力与坚持。如果你和我一样,坚信努力会带来回报,请关注我,点个赞,一起迎接更加美好的明天!你的支持是我继续前行的动力!"

"每一次创作都是一次学习的过程,文章中若有不足之处,还请大家多多包容。你的关注和点赞是对我最大的支持,也欢迎大家提出宝贵的意见和建议,让我不断进步。"

神秘泣男子


http://www.hkcw.cn/article/ESiqYeZTKb.shtml

相关文章

一文读懂Nginx应用之 Keepalived+Nginx+Tomcat实现高可用负载均衡集群

目录 一、概述 二、环境规划 三、Nginx服务、Tomcat服务安装部署 (一)、Nginx服务安装部署 (二)、Tomcat服务安装部署 1、Tomcat01应用服务器部署应用程序 (1)、tomcat_8081服务 (2)、tomcat_8082服务 2、Tomcat02应用服务器部署应用程序 (1)、tomcat_8081服务 (2)、…

从0到1部署Tomcat和添加servlet(IDEA2024最新版详细教程)

本文不仅细化了每一个步骤&#xff0c;实现了从0到1部署Tomcat和添加servlet。还针对IDEA2024版和以前的版本在部署上的区别&#xff0c;做了详细介绍&#xff0c;尤其是add framework support部分。与此同时&#xff0c;针对控制台中文乱码问题&#xff0c;本文也给出了详细解…

Apache Tomcat RCE 稳定复现 保姆级!(CVE-2024-50379)附视频+POC

原文链接 Apache Tomcat 最新RCE 稳定复现分析 保姆级&#xff01;&#xff01;&#xff01;附复现视频POC 前言 最近爆出 Apache Tomcat条件竞争导致的RCE&#xff0c;影响范围当然是巨大的&#xff0c;公司也及时收到了相关情报&#xff0c;于是老大让我复现&#xff0c;以…

Tomcat 的使用(图文教学)

Tomcat 的使用&#xff08;图文教学&#xff09; 前言一、什么是Tomcat&#xff1f;二、Tomcat 服务器和 Servlet 版本的对应关系三、Tomcat 的使用 1、安装2、目录介绍3、如何启动4、Tomcat 的停止5、如何修改 Tomcat 的端口号6、如何部暑 web 工程到 Tomcat 中 6.1 方式一6.…

linux服务器tomcat日志中文出现问号乱码

目录 一、场景二、排查三、原因四、解决 一、场景 tomcat日志的中文出现问号乱码 乱码示例 ??[377995738417729536]????????? ac??????????????message:二、排查 1、使用locale命令查看服务器当前使用的语言包 发现只用的语言包为utf-8&#xff0…

在【IntelliJ IDEA】中配置【Tomcat】【2023版】【中文】【图文详解】

作为一款功能强大的集成开发环境&#xff08;IDE&#xff09;&#xff0c;IntelliJ IDEA为Web服务器提供了卓越的支持&#xff0c;从而极大地简化了程序员在Web开发过程中的工作流程。学习Java Web开发实质上就是掌握如何创造动态Web资源&#xff0c;这些资源在完成开发后&…

tomcat 8 所有版本安装包

https://archive.apache.org/dist/tomcat/tomcat-8/ 此时在这里点击你要下载的版本号&#xff0c;这里大版本都是 8&#xff0c;这里演示下载 8.5.57 的过程&#xff1a; 点击后页面如下&#xff0c;再点击这里的 bin/ 我使用的linux系统选择对应的版本下载

Tomcat多应用部署与静态资源路径问题全解指南

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家、CSDN平台优质创作者&#xff0c;高级开发工程师&#xff0c;数学专业&#xff0c;10年以上C/C, C#, Java等多种编程语言开发经验&#xff0c;拥有高级工程师证书&#xff1b;擅长C/C、C#等开发语言&#xff0c;熟悉Java常用开…

Tomcat 8.5 下载、安装、启动及各种问题

&#x1f970;&#x1f970;&#x1f970;来都来了&#xff0c;不妨点个关注叭&#xff01; &#x1f449;博客主页&#xff1a;欢迎各位大佬!&#x1f448; 本期内容主要介绍 Tomcat 8 的安装&#xff0c;以及可能会遇到的问题 文章目录 1. Tomcat 安装2. 可能会遇到的问题2.…

tomcat官网下载及安装

文档参考&#xff1a; (5条消息) tomcat官网下载详细步骤_成长硕果的博客-CSDN博客_tomcat怎么下载 (5条消息) Tomcat的下载及安装_InkingWT的博客-CSDN博客_tomcat下载及安装 一、Tomcat下载 1、tomcat官方网址&#xff1a;https://tomcat.apache.org 2、选择自己所需要的…

Apache Tomcat 远程代码执行漏洞(CVE-2025-24813) 超详细!

一、漏洞概述 远程代码执行漏洞(CVE-2025-24813)源于 Apache Tomcat 的反序列化机制未对用户输入进行严格验证&#xff0c;攻击者可通过构造恶意序列化对象绕过安全限制&#xff0c;处理部分 PUT 请求时&#xff0c;攻击者利用临时文件路径处理中的缺陷&#xff08;将路径分隔…

Tomcat 是什么?有什么功能和作用?为什么启动 Spring 或 Spring Boot 项目需要 Tomcat?

本文的内容是博主学习并记录关于 Tomcat 的基本知识&#xff0c;介绍了 Tomcat 为什么是一个 Web 应用服务器&#xff0c;为什么是 Servlet 容器&#xff0c;同时总结了 Tomcat 的一些功能原理&#xff0c;并详细介绍了 Tomcat 在 Spring 和SpringBoot 项目中的使用原理。本文不…

IDEA 中配置 Tomcat (详细教程)

前言 在Web项目的开发过程中&#xff0c;Tomcat 作为一款开源的Servlet容器&#xff0c;不仅能够提供稳定的运行环境&#xff0c;为开发者提供了丰富的功能支持。因此&#xff0c;本文将详细阐述在Web项目如何配置Tomcat服务器&#xff0c;包括安装检查、模块设置、路径配置、依…

tomcat 在 Linux 环境下的安装与配置教程

想部署个 Java Web 项目&#xff1f;那你八成会接触到 Tomcat。 本篇就是为 从没用过 Tomcat 的新手 写的&#xff0c;带你一步一步在 Linux 系统里把 Tomcat 装好、跑起来&#xff01; 为什么要学会用 Tomcat&#xff1f; Tomcat 是一个免费的 Java Web 服务器&#xff0c;功…

【机器学习】线性回归与逻辑回归的极致解析:从数学理论到实战案例

文章目录 1. 引言Python 代码示例 2. 线性回归2.1 线性回归的基本概念线性回归的定义数学表达式及模型假设 2.2 线性回归的工作原理最小二乘法&#xff08;Ordinary Least Squares, OLS&#xff09;梯度下降法在线性回归中的应用多元线性回归与一元线性回归的区别与联系 2.3 线…

机器学习-聚类分析算法

一、聚类分析的定义 聚类分析是一种无监督学习的统计分析方法。它的主要目的是将一个数据集中的样本&#xff08;或观测值&#xff09;按照某种相似性或距离度量划分成若干个类别&#xff08;簇&#xff09;。在聚类过程中&#xff0c;同一个簇内的样本具有较高的相似性&#…

LeetCode 热题 100 回顾

目录 一、哈希部分 1.两数之和 (简单) 2.字母异位词分组 (中等) 3.最长连续序列 (中等) 二、双指针部分 4.移动零 (简单) 5.盛最多水的容器 (中等) 6. 三数之和 (中等) 7.接雨水 (困难) 三、滑动窗口 8.无重复字符的最长子串 (中等) 9.找到字符串中…

人脸识别-特征算法

文章目录 一、LBPH算法1.基本原理2.实现步骤3.代码实现 二、Eigenfaces算法1.特点2.代码实习 三、FisherFaces算法1.算法原理2.算法特点3.代码实现 四、总结 人脸识别特征识别器是数字信息发展中的一种生物特征识别技术&#xff0c;其核心在于通过特定的算法和技术手段&#xf…

【数据结构】排序算法---计数排序(动图演示)

文章目录 1. 定义2. 算法步骤3. 动图演示4. 性质5. 算法分析6. 代码实现C语言PythonJavaGo 结语 1. 定义 计数排序又称为鸽巢原理&#xff0c;是对哈希直接定址法的变形应用。计数排序不是基于比较的排序算法&#xff0c;其核心在于将输入的数据值转化为键存储在额外开辟的数组…

【优选算法 | 哈希表】常见算法题的哈希表套路拆解

算法相关知识点可以通过点击以下链接进行学习一起加油&#xff01;双指针滑动窗口二分查找前缀和位运算模拟链表 在刷题的过程中&#xff0c;我们会频繁遇到一些“高频套路”——而哈希表正是其中最常用也最高效的工具之一。它能帮助我们在 O(1) 的时间复杂度内完成查找、插入与…