Dockerfile构建Tomcat镜像
准备apache包和jdk并解压
[root@localhost tomcat]# ll
总用量 196728
-rw-r--r--. 1 root root 9690027 7月 17 2020 apache-tomcat-8.5.40.tar.gz
-rw-r--r--. 1 root root 674 8月 2 20:19 Dockerfile
-rw-r--r--. 1 root root 191753373 7月 17 2020 jdk-8u191-linux-x64.tar.gz
[root@localhost tomcat]# tar xf apache-tomcat-8.5.40.tar.gz
[root@localhost tomcat]# tar xf jdk-8u191-linux-x64.tar.gz
[root@localhost tomcat]# ll
总用量 196728
drwxr-xr-x. 9 root root 220 8月 3 13:58 apache-tomcat-8.5.40
-rw-r--r--. 1 root root 9690027 7月 17 2020 apache-tomcat-8.5.40.tar.gz
-rw-r--r--. 1 root root 552 8月 3 13:55 Dockerfile
drwxr-xr-x. 7 10 143 245 10月 6 2018 jdk1.8.0_191
-rw-r--r--. 1 root root 191753373 7月 17 2020 jdk-8u191-linux-x64.tar.gz
创建工作目录
[root@localhost ]# mkdir tomcat
编写dockerfile文件
[root@localhost tomcat]# vim Dockerfile
FROM centos:7
MAINTAINER Crushlinux <crushlinux@163.com
ADD jdk1.8.0_191 /usr/local/java
ENV JAVA_HOME /usr/local/java
ENV JAVA_BIN /use/local/java/bin
ENV JRE_HOME /usr/local/java/jre
ENV PATH $PATH:/usr/local/java/bin:/usr/local/java/jre/bin
ENV CLASSPATH /usr/local/java/jre/bin:/usr/local/java/lib:/usr/local/java/jre/lib/charsets.jar
ADD apache-tomcat-8.5.40 /usr/local/tomcat
RUN chmod 755 /usr/local/tomcat/bin/startup.sh
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
EXPOSE 8080
CMD ["/usr/local/tomcat/bin/catalina.sh","run"]
~
具体来说,这个Dockerfile文件的内容如下:
FROM centos:7:表示基础镜像是CentOS 7。MAINTAINER Crushlinux <crushlinux@163.com>:表示维护者信息,即该Docker镜像的作者和联系方式。ADD jdk1.8.0_191 /usr/local/java:将JDK压缩包解压到/usr/local/java目录下。ENV JAVA_HOME /usr/local/java:设置JAVA_HOME环境变量为/usr/local/java。ENV JAVA_BIN /usr/local/java/bin:设置JAVA_BIN环境变量为/usr/local/java/bin。ENV JRE_HOME /usr/local/java/jre:设置JRE_HOME环境变量为/usr/local/java/jre。ENV PATH $PATH:/usr/local/java/bin:/usr/local/java/jre/bin:将/usr/local/java/bin和/usr/local/java/jre/bin添加到PATH环境变量中。ENV CLASSPATH /usr/local/java/jre/bin:/usr/local/java/lib:/usr/local/java/jre/lib/charsets.jar:设置CLASSPATH环境变量为/usr/local/java/jre/bin:/usr/local/java/lib:/usr/local/java/jre/lib/charsets.jar。ADD apache-tomcat-8.5.40 /usr/local/tomcat:将Tomcat压缩包解压到/usr/local/tomcat目录下。RUN chmod 755 /usr/local/tomcat/bin/startup.sh:设置/usr/local/tomcat/bin/startup.sh文件的权限为755。RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime:创建一个软链接将系统时区设置为上海。EXPOSE 8080:将容器的8080端口暴露出来
构建镜像
[root@localhost tomcat]# docker build -t tomcat:new .Sending build context to Docker daemon 614 MBStep 1/13 : FROM centos:7---> 74d9a3a7d55dStep 2/13 : MAINTAINER Crushlinux <crushlinux@163.com---> Using cache---> efa399b03844Step 3/13 : ADD jdk1.8.0_191 /usr/local/java---> 6c3bcd8412e8Removing intermediate container 2ee47f838026Step 4/13 : ENV JAVA_HOME /usr/local/java---> Running in e9f1e8c91c15---> a2bfe81ba7f5Removing intermediate container e9f1e8c91c15Step 5/13 : ENV JAVA_BIN /use/local/java/bin---> Running in abbe840f87de---> 8a62172d033aRemoving intermediate container abbe840f87deStep 6/13 : ENV JRE_HOME /usr/local/java/jre---> Running in 4209c7fe0c4a---> 9936e3b14561Removing intermediate container 4209c7fe0c4aStep 7/13 : ENV PATH $PATH:/usr/local/java/bin:/usr/local/java/jre/bin---> Running in 3f266fb8c13e---> 11bfac038ca4Removing intermediate container 3f266fb8c13eStep 8/13 : ENV CLASSPATH /usr/local/java/jre/bin:/usr/local/java/lib:/usr/local/java/jre/lib/charsets.jar---> Running in 681f67cde11e---> 62e50122b88aRemoving intermediate container 681f67cde11eStep 9/13 : ADD apache-tomcat-8.5.40 /usr/local/tomcat---> abfee70cf80bRemoving intermediate container 456e93af2eb9Step 10/13 : RUN chmod 755 /usr/local/tomcat/bin/startup.sh---> Running in 886999728ff0---> bcdc9c2a7630Removing intermediate container 886999728ff0Step 11/13 : RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime---> Running in b513e27c3035---> eafbe22ec214Removing intermediate container b513e27c3035Step 12/13 : EXPOSE 8080---> Running in 9d3d4047a2e3---> 4149863793a1Removing intermediate container 9d3d4047a2e3Step 13/13 : CMD /usr/local/tomcat/bin/catalina.sh run---> Running in 97d46c7d6b1b---> ccdba3e6ed6aRemoving intermediate container 97d46c7d6b1bSuccessfully built ccdba3e6ed6a
查看
[root@localhost tomcat]# docker images tomcat:new
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat new ccdba3e6ed6a 48 seconds ago 1e+03 MB
测试容器
[root@localhost tomcat]# docker run -d -p 8080:8080 --name=tomcat tomcat:new
19e5c9217b9ab431c75a7c07f1e8fd7571b67f9744ee060271163300a5dba64c
浏览器访问测试

相关文章:
Dockerfile构建Tomcat镜像
准备apache包和jdk并解压 [rootlocalhost tomcat]# ll 总用量 196728 -rw-r--r--. 1 root root 9690027 7月 17 2020 apache-tomcat-8.5.40.tar.gz -rw-r--r--. 1 root root 674 8月 2 20:19 Dockerfile -rw-r--r--. 1 root root 191753373 7月 17 2020 jdk-8u191-…...
k8s的介绍
简介 Kubernetes,简称K8s,是用8代替名字中间的8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用, K8s的目标是让部署容器化的应用简单并且高效,K8s提供了应用部署,规划,更新,维护的一种机制。 K8s是Google开源的一个容器编排引…...
mysql sql语句 需要使用like 场景,解决方案
mysql 多重like 解决方案 方案一、使用like 方案二、使用REGEXP 正则匹配 方案三、使用group_concat多重模糊匹配 方案一、使用like 查询user包含小李并且小王的相关数据 SELECT * FROM user WHERE name LIKE %小王% or name like %小王% 方案二、使用REGEXP 正则匹配 查询use…...
通过C语言设计的贪吃蛇游戏(控制台终端)
一、项目介绍 当前通过控制台终端实现一个贪吃蛇小游戏,实现游戏的绘制、更新、控制等功能。 二、实现效果 三、完整代码 下面贴出的代码在Windows系统上编译运行,需要使用conio.h头文件中的getch()函数来获取键盘输入,用于控制蛇的移动。…...
c++实现Qt信号和槽机制
文章目录 简介信号槽信号与槽的连接 特点观察者模式定义观察者模式结构图 实现简单的信号和槽 简介 信号槽机制与Windows下消息机制类似,消息机制是基于回调函数,Qt中用信号与槽来代替函数指针,使程序更安全简洁。 信号和槽机制是 Qt 的核心…...
【Linux】五、进程
一、冯诺依曼体系结构 存储器:指的是内存; 输入设备:键盘、摄像头、话筒,磁盘,网卡; 输出设备:显示器、音响、磁盘、网卡; 中央处理器(CPU):运算器…...
使用 OpenCV 和 Python 卡通化图像-附源码
介绍 在本文中,我们将构建一个有趣的应用程序,它将卡通化提供给它的图像。为了构建这个卡通化器应用程序,我们将使用 python 和 OpenCV。这是机器学习令人兴奋的应用之一。在构建此应用程序时,我们还将了解如何使用 easygui、Tkinter 等库。在这里,您必须选择图像,然后应…...
GitLab不同角色对应的权限
Owner(拥有者): 拥有者是项目或组的创建者,拥有最高级别的权限。他们可以添加、删除项目成员,修改项目设置,管理访问权限,并进行项目转让。在组级别,他们还可以添加或删除子组和项目…...
手写一个简易的布隆过滤器
1.什么是布隆过滤器 布隆过滤器(Bloom Filter)是1970年由布隆(人名)提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都比一般的算法要好的多,…...
阿里云快速部署开发环境 (Apache + Mysql8.0)
本文章的内容截取于云服务器管理控制台提供的安装步骤,再整合前人思路而成,文章末端会提供原文连接 ApacheMysql 8.0部署MySQL数据库(Linux)步骤一:安装MySQL步骤二:配置MySQL步骤三:远程访问My…...
侧边栏的打开与收起
侧边栏的打开与收起 <template><div class"box"><div class"sideBar" :class"showBox ? : controller-box-hide"><div class"showBnt" click"showBox!showBox"><i class"el-icon-arrow-r…...
贝叶斯学习
贝叶斯 贝叶斯学习的背景贝叶斯定理举例 概览选择假设— MAPMAP举例 选择假设 — 极大似然 MLML 举例: 抛硬币问题 极大似然 & 最小二乘Nave Bayesian Classifier (朴素贝叶斯分类器)举例1:词义消歧 (Word Sense Disambiguation)举例 2: 垃圾邮件过滤 从垃圾邮件…...
Java并发系列之六:CountDownLatch
CountDownLatch作为开发中最常用的组件,今天我们来聊聊它的作用以及内部构造。 首先尝试用一句话对CountDownLatch进行概括: CountDownLatch基于AQS,它实现了闩锁,在开发中可以将其用作任务计数器。 若想要较为系统地去理解这些特性ÿ…...
24数据结构-图的基本概念与存储结构
目录 第六章 图6.1 图的基本概念知识回顾 6.2 图的储存结构(邻接矩阵法)1. 数组表示法(1) 有向图,无向图的邻接矩阵 2. 定义邻接矩阵的结构3. 定义图的结构4. 构造图G5. 特点 第六章 图 6.1 图的基本概念 图是一种非线性结构 图的特点&am…...
自然语言处理学习笔记(三)————HanLP安装与使用
目录 1.HanLP安装 2.HanLP使用 (1)预下载 (2)测试 (3)命令行 (4)测试样例 3.pyhanlp可视化 4. HanLP词性表 1.HanLP安装 HanLP的 Python接口由 pyhanlp包提供,其安装…...
CS 144 Lab Five -- the network interface
CS 144 Lab Five -- the network interface TCP报文的数据传输方式地址解析协议 ARPARP攻击科普 Network Interface 具体实现测试tcp_ip_ethernet.ccTCPOverIPv4OverEthernetAdapterTCPOverIPv4OverEthernetSpongeSocket通信过程 对应课程视频: 【计算机网络】 斯坦福大学CS144…...
Mecha
一、Mecha Mecha 是一个开源的多云 Kubernetes 管理平台,旨在简化和统一在多个云提供商上运行 Kubernetes 集群的管理和操作。它是由阿里巴巴集团开发和维护的项目。 Mecha 的主要目标是提供一个统一的界面和工具,使用户能够更轻松地在不同的云提供商上…...
Apache RocketMQ之集成RocketMQ_MQTT 安装部署协议
Apache RocketMQ 安装说明 安装步骤 参考快速开始 https://rocketmq.apache.org/zh/docs/quickStart/01quickstart 安装可视化rocketmq_dashboard下载地址 https://rocketmq.apache.org/zh/docs/4.x/deployment/03Dashboard/ 安装rocketmq_mqtt https://rocketmq.apache.o…...
Oracle多行数据合并为一行数据,并将列数据转为字段名
Oracle多行数据合并为一行数据 实现查询效果原数据 方式一:MAX()数据效果SQL 方式二:LISTAGG()数据效果 方式三:WM_CONCAT()数据效果 实现查询效果 原数据 FZPROJECTVALUE1电脑$16001手机$121导管$12电脑$22手机$22 方式一:MAX…...
MySQL5.7 与 MariaDB10.1 审计插件兼容性验证
这是一篇关于发现 MariaDB 审计插件导致 MySQL 发生 crash 后,展开适配验证并进行故障处理的文章。 作者:官永强 爱可生DBA 团队成员,擅长 MySQL 运维方面的技能。热爱学习新知识,亦是个爱打游戏的宅男。 本文来源:原创…...
国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...
STM32标准库-DMA直接存储器存取
文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设…...
在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...
是否存在路径(FIFOBB算法)
题目描述 一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数,分别表示n 和 e 的值(1…...
企业如何增强终端安全?
在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...
让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比
在机器学习的回归分析中,损失函数的选择对模型性能具有决定性影响。均方误差(MSE)作为经典的损失函数,在处理干净数据时表现优异,但在面对包含异常值的噪声数据时,其对大误差的二次惩罚机制往往导致模型参数…...
android13 app的触摸问题定位分析流程
一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...
