使用Dockerfile构建镜像
目录
1.使用Dockerfile构建tomcat镜像
1.1 通过ARG传参构建不同版本的tomcat
2.缩小镜像的体积大小
2.1 使用较小体积的基础镜像
2.2 多级构建减少体积
1.使用Dockerfile构建tomcat镜像
cd /opt
mkdir tomcat
cd tomcat/
上传tomcat所需的依赖包
使用tar xf 解压三个压缩包vim Dockerfile
FROM centos:7
LABEL function="tomcat image" author="tc" createtime="2024-07-16"ADD jdk-8u391-linux-x64.tar.gz /opt/
ENV JAVA_HOME=/opt/jdk1.8.0_391
ENV CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
ENV PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATHADD apache-tomcat-9.0.16.tar.gz /opt/
EXPOSE 8080
CMD ["/opt/apache-tomcat-9.0.16/bin/catalina.sh", "run"]docker build -t tomcat:9.0 . #构建镜像
docker images #查看镜像
docker run -d --name a1 -p 1314:8080 tomcat:9.0 #启动容器




浏览器访问验证:http://192.168.9.113:1314

1.1 通过ARG传参构建不同版本的tomcat
注:以以上构建tomcat镜像为基础
cd /opt/tomcat
vim DockerfileFROM centos:7
LABEL function="tomcat image" author="tc" createtime="2024-07-16"ADD jdk-8u391-linux-x64.tar.gz /opt/
ENV JAVA_HOME=/opt/jdk1.8.0_391
ENV CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
ENV PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATHARG VER
ADD $VER /opt/tomcat
EXPOSE 8080
CMD ["/opt/tomcat/bin/catalina.sh", "run"]docker build --build-arg VER=apache-tomcat-8.5.16 -t tomcat:8.5 . #构建8.5版本tomcat镜像
docker build --build-arg VER=apache-tomcat-9.0.16 -t tomcat:9.0 . #构建9.0版本tomcat镜像



浏览器验证
http://192.168.9.113:1314
http://192.168.9.113:1315


2.缩小镜像的体积大小
2.1 使用较小体积的基础镜像
注:以1.1中实验为基础
cd /opt/tomcat
mv Dockerfile Dockerfile.bakvim Dockerfile
FROM openjdk:8-jdk-alpine
ARG VER
COPY $VER /opt/tomcat/
CMD ["/opt/tomcat/bin/catalina.sh", "run"]docker build --build-arg VER=apache-tomcat-9.0.16 -t tomcat:9 . #构建镜像
docker run -d --name a3 -p 1313:8080 tomcat:9



浏览器访问测试http://192.168.9.113:1313
2.2 多级构建减少体积
注:以7.15日博客中4.3章节中源码编译安装nginx实验为基础

通过多级构建减少镜像体积
vim Dockerfile
FROM centos:7 as first #为第一级构建镜像设置别名ADD nginx-1.24.0.tar.gz /opt/
ADD CentOS-Base.repo /etc/yum.repos.d/RUN yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make && \useradd -M -s /sbin/nologin nginx && \cd /opt/nginx-1.24.0/ && \./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module && \make && \make installFROM centos:7 #开启第二级构建
COPY --from=first /usr/local/nginx/ /usr/local/nginx/ #copy --from 从其他构建阶级中复制源文件
RUN useradd -M -s /sbin/nologin nginx #运行用户必要命令CMD ["/usr/local/nginx/sbin/nginx", "-g", "daemon off;"]docker build -t nginx:v2 .
docker images
docker run -d --name c1 -p 80:80 nginx:v2
docker ps -a


浏览器访问验证:http://192.168.9.113:80

相关文章:
使用Dockerfile构建镜像
目录 1.使用Dockerfile构建tomcat镜像 1.1 通过ARG传参构建不同版本的tomcat 2.缩小镜像的体积大小 2.1 使用较小体积的基础镜像 2.2 多级构建减少体积 1.使用Dockerfile构建tomcat镜像 cd /opt mkdir tomcat cd tomcat/ 上传tomcat所需的依赖包 使用tar xf 解压三个压缩…...
概率论原理精解【3】
文章目录 向量值向量值函数导数对称矩阵定义性质例子应用 向量值理论基础定义性质应用示例 向量值函数的导数定义性质应用 向量值 向量值函数导数 D n ⊂ R n , 向量值函数 f : D n → R m D^n \subset R^n,向量值函数f:D^n\rightarrow R^m Dn⊂Rn,向量值函数f:Dn→Rm 1. 向量…...
[C/C++入门][循环]14、计算2的幂(2的n次方)
计算2的幂(即2的n次方)非常经典。你懂几种方法呢?很多人只会一种,我们来分析一下。 可以通过多种方式实现: 1、最简单的方法之一是使用位运算符<<,它本质上是在二进制表示下对2进行左移操作&#x…...
RPC与服务的注册发现
文章目录 1. 什么是远程过程调用(RPC)?2. RPC的流程3. RPC实践4. RPC与REST的区别4.1 RPC与REST的相似之处4.2 RPC与REST的架构原则4.3 RPC与REST的主要区别 5. RPC与服务发现5.1 以zookeeper为服务注册中心5.2 以etcd为服务注册中心 6. 小结参考 1. 什么是远程过程调用(RPC)?…...
3112. 访问消失节点的最少时间 Medium
给你一个二维数组 edges 表示一个 n 个点的无向图,其中 edges[i] [ui, vi, lengthi] 表示节点 ui 和节点 vi 之间有一条需要 lengthi 单位时间通过的无向边。 同时给你一个数组 disappear ,其中 disappear[i] 表示节点 i 从图中消失的时间点࿰…...
FastAPI 学习之路(五十二)WebSockets(八)接受/发送json格式消息
前面我们发送的大多数都是text类型的消息,对于text消息来说,后端处理出来要麻烦的多,那么我们可以不可以传递json格式的数据,对于前后端来说都比较友好,答案是肯定的,我们需要做下处理。 首先,…...
Go语言并发编程-案例_3
案例 并发目录大小统计 业务逻辑 统计目录的文件数量和大小(或其他信息)。示例输出: // 某个目录:2637 files 1149.87 MB 实现思路 给定一个或多个目录,并发的统计每个目录的size,最后累加到一起。 当…...
pikachu之跨站脚本攻击(x‘s‘s)
1get型 输入a看一下 接着输入<a> 发现<>没有被过滤当做标签处理了 尝试在表单提交的框里面,输入xss语句 尝试输入<script>alert(1)</script> 发现有长度限制 因为这里是get请求 get请求的特点是:传参是在url中的 所以我们可以在…...
Qt模型/视图架构——委托(delegate)
一、为什么需要委托 模型(model)用来数据存储,视图(view)用来展示数据。因此,模型/视图架构是一种将数据存储和界面展示分离的编程方法。具体如下图所示: 由图可知,模型向视图提供数…...
python3.11SSL: SSLV3_ALERT_HANDSHAKE_FAILURE
参考:python request包 版本不兼容 报错sslv3 alert handshake failure 解决方法-CSDN博客 修改:Python311\Lib\site-packages\urllib3\util\ssl_.py 新版本3.11里默认没有DEFAULT_CIPHERS 补回来: #__imported from 3.6.8 # A secure default. # So…...
[深度学习]基于yolov10+streamlit目标检测演示系统设计
YOLOv10结合Streamlit构建的目标检测系统,不仅极大地增强了实时目标识别的能力,还通过其直观的用户界面实现了对图片、视频乃至摄像头输入的无缝支持。该系统利用YOLOv10的高效检测算法,能够快速准确地识别图像中的多个对象,并标注…...
开源模型应用落地-FastAPI-助力模型交互-进阶篇(三)
一、前言 FastAPI 的高级用法可以为开发人员带来许多好处。它能帮助实现更复杂的路由逻辑和参数处理,使应用程序能够处理各种不同的请求场景,提高应用程序的灵活性和可扩展性。 在数据验证和转换方面,高级用法提供了更精细和准确的控制&#…...
机器人及其相关工科专业课程体系
机器人及其相关工科专业课程体系 前言传统工科专业机械工程自动化/控制工程计算机科学与技术 新兴工科专业智能制造人工智能机器人工程 总结Reference: 前言 机器人工程专业是一个多领域交叉的前沿学科,涉及自然科学、工程技术、社会科学、人文科学等相关学科的理论…...
C#数字医学影像系统(RIS/PACS)源码,Oracle数据库,C/S架构,运行稳定
数字医学影像系统(RIS/PACS)源码,三甲以下的医院都能满足。PACS 系统全套成品源码。 开发技术:C/S架构,C#开发语言,数据库服务器采用Oracle数据库。 医学影像存储与传输系统,融合了医学信息化…...
Spring-Boot基础--yaml
目录 Spring-Boot配置文件 注意: YAML简介 YAML基础语法 YAML:数据格式 YAML文件读取配置内容 逐个注入 批量注入 ConfigurationProperties 和value的区别 Spring-Boot配置文件 Spring-Boot中不用编写.xml文件,但是spring-Boot中还是存在.prope…...
C/C++蓝屏整人代码
文章目录 📒程序效果 📒具体步骤 1.隐藏任务栏 2.调整cmd窗口大小 3.调整cmd窗口屏幕颜色 4.完整代码 📒代码详解 🚀欢迎互三👉:程序猿方梓燚 💎💎 🚀关注博主&a…...
【Android安全】Ubuntu 下载、编译 、刷入Android-8.1.0_r1
0. 环境准备 Ubuntu 16.04 LTS(预留至少95GB磁盘空间,实测占94.2GB) Pixel 2 XL 要买欧版的,不要美版的。 欧版能解锁BootLoader、能刷机。 美版IMEI里一般带“v”或者"version",这样不能解锁BootLoader、…...
HBuilder X3.4版本中使用uni-app自定义组件
HBuilder X3.4版本中使用uni-app自定义组件 这是我的小程序页面结构 方式一:导入components 1.创建componets文件,并编写你的组件页面 <template><view class"my-search-container"><!-- 使用 view 组件模拟 input 输入框的样…...
PHP基础语法(一)
一、初步语法 1、PHP代码标记:以 <?php 开始,以 ?> 结束; 2、PHP注释:行注释://(双斜杠)或# 块注释:/* */ 3、PHP语句分隔符: 1)在PHP中&#…...
Python项目打包与依赖管理指南
在Python开发中,python文件需要在安装有python解释器的计算机的电脑上才能运行,但是在工作时,我们需要给客户介绍演示项目功能时并不一定可以条件安装解释器,而且这样做非常不方便。这时候我们可以打包项目,用于给客户…...
Battery Toolkit:终极Apple Silicon Mac电池健康管理指南,让电池寿命延长50%
Battery Toolkit:终极Apple Silicon Mac电池健康管理指南,让电池寿命延长50% 【免费下载链接】Battery-Toolkit Control the platform power state of your Apple Silicon Mac. 项目地址: https://gitcode.com/gh_mirrors/ba/Battery-Toolkit 你是…...
基于Logistic函数的负荷需求响应模型:Matlab编程实现负荷转移率对比,涵盖电价激励下...
负荷需求响应模型 基于Logistic函数 采用matlab编程,考虑电价激励下的乐观响应和悲观响应,利用负荷需求响应模型得到峰转平、平转谷的实际负荷转移率,从而得到基于Logistic函数的负荷转移对比,程序运行稳定一、代码概述 本代码基于…...
斯坦福CS146S:AI时代开发者角色转变
二、十周课程:从原理到实战 课程设计覆盖了 AI 辅助开发的完整生命周期。以下是每周的关键主题: 第 1-2 周:LLM 基础与 Agent 架构 从 LLM 的工作原理讲起,深入 Prompt Engineering 的实战技巧,然后进入 Agent 架构的关…...
PMP 证书太香了!2026 多地福利加码,这 9 项权益直接领
各位正在做项目、想提升职场竞争力的同学,今天学长给大家带来一个超实用的好消息 ——PMP 证书现在不只是职场加分项,更是多地认可的人才通行证,福利直接拉满,看完你就知道该不该冲!很多人考 PMP 只知道能提升项目管理…...
3分钟掌握Tab-Resize:浏览器分屏布局终极指南
3分钟掌握Tab-Resize:浏览器分屏布局终极指南 【免费下载链接】tab-resize Split Screen made easy. Resize the CURRENT tab and tabs to the RIGHT into layouts on separate Windows. w/ Multi-monitor Support 项目地址: https://gitcode.com/gh_mirrors/ta/t…...
Media Player Classic - Home Cinema:Windows平台的开源媒体播放器王者
Media Player Classic - Home Cinema:Windows平台的开源媒体播放器王者 【免费下载链接】mpc-hc MPC-HCs main repository. For support use our Trac: https://trac.mpc-hc.org/ 项目地址: https://gitcode.com/gh_mirrors/mpc/mpc-hc Media Player Classic…...
专为AWD/CTF攻防而生!一站式管理、权限维持、基线加固、Flag读取,助力参赛选手在比赛中高效管理多个目标
0x01 工具介绍 LingOps(灵控)是专为AWD/AWDP/CTF攻防竞赛打造的自动化平台,精准贴合赛事实战需求,集IP探测、WebShell与SSH终端管控、木马生成、权限维持、WAF防御、基线加固、Flag定时读取等全流程功能于一体,一站式…...
深度学习里的“自动稳压器”:通俗解读批量规范化(Batch Normalization)
版权声明:本文同步发布于个人博客。欢迎交流与转载,但请务必注明出处。 导读:如果你正在训练深层神经网络,是否遇到过训练慢如蜗牛、学习率稍大就发散、或者网络深了就不收敛的烦恼?今天我们要聊的批量规范化ÿ…...
**量化模型实战:用Python构建高精度股票收益预测模型(附完整代码)**在金融工程领域,**量化投资**已成为主流策略之一。本
量化模型实战:用Python构建高精度股票收益预测模型(附完整代码) 在金融工程领域,量化投资已成为主流策略之一。本文将带你从零开始构建一个基于时间序列特征的股票收益预测模型,使用Python实现,并结合真实…...
APKMirror客户端:安全获取Android应用的三步实践方案
APKMirror客户端:安全获取Android应用的三步实践方案 【免费下载链接】APKMirror 项目地址: https://gitcode.com/gh_mirrors/ap/APKMirror 在Android生态系统中,安全获取应用安装包一直是个棘手问题。传统方式存在安全隐患,而官方商…...
