大鲸鱼—使用Dockerfile构建镜像

制作Tomcat的Dockerfile 接下来将编写一个Tomcat的Dockerfile文件,以此构建一个Docker镜像,并基于该镜像启动得到一个Tomcat容器,最后试着在该容器中部署一个测试项目 思路: 基于centos镜像,配置一个jdk环境和tomcat环境,并进行环境变量的配置 1 jdk和tomcat下载 自行到网上下载jdk和tomcat的安装包,并上传到自己的服务器的任意目录下,如下图,我这里放在了/opt/web_app/docker_test目录下: 2 编写Dockerfile文件 注:编写的Docker. 阅读详情

目录

一、使用Dockerfile构建tomcat镜像

1.通过ARG传参构建不同版本的tomcat

二、缩小镜像的体积大小

1.使用较小体积的基础镜像

2.多级构建减少体积


一、使用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:$PATH
 
ADD 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.80.100:1314


1.通过ARG传参构建不同版本的tomcat

基于上文构建tomcat镜像为基础

cd /opt/tomcat
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:$PATH
 
ARG 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镜像

docker run -d --name a1 -p 1314:8080 tomcat:8.5
 
docker run -d --name b1 -p 1315:8080 tomcat:9.0

 

二、缩小镜像的体积大小

1.使用较小体积的基础镜像

以上文实验为基础

cd /opt/tomcat
mv Dockerfile Dockerfile.bak
 
vim 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 a2 -p 1313:8080 tomcat:9

2.多级构建减少体积

由于正常安装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 install
 
FROM 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.80.100:80

【Linux】 Dockerfile Tomcat部署 Dockerfile Tomcat部署 阅读详情

相关推荐

Dockerfile 搭建tomcat基础镜像与项目镜像

分享一些系统的面试题,大家可以拿去刷一刷,准备面试涨薪。

2301_76323084的博客 1562

docker制作tomcat基础镜像,最方便快捷,升级的3种方法

1.使用原有旧版tomcat镜像,制作新版官方tomcat镜像 2.容器内修改文件打包成新tomcat镜像 3.使用官方安装包制作镜像

HuoYingTaDie的博客 3895

【Dockerfile位于根目录】IDEA集成Docker,打包时,自动构建镜像,并推送到远程docker服务器

写在前面 IDEA集成Docker,需要开启docker的2375端口 Docker开放2375端口,实现远程访问 : https://blog.youkuaiyun.com/single_0910/article/details/121201709 环境 Linux环境:Ubuntu18.04 LTS IDEA版本:2019.3.5 安装Docker插件 略 IDEA 2019 版本及其往上版本,默认安装Docker插件 配置Docker环境 可以看到,在service模块已经出现了docker小鲸鱼。 配置

会者定离,一期一祈 3897

Dockerfile构建Tomcat镜像

Dockerfile构建Tomcat

记录我目之所及的世界 2334

Docker容器-从最基础到Dockerfile、Docker-compose,有这一篇足够了!!!

Docker从0-1,从小白-熟练使用容器的高手

h16678481的博客 2474

5、构建 Docker 镜像全攻略

本文详细介绍了如何构建和优化Docker镜像,包括编写Dockerfile、构建镜像、理解镜像层的工作原理以及优化技巧。此外,还提供了一个实验环节,演示如何在不使用Dockerfile的情况下生成Docker镜像,帮助读者更全面地掌握Docker镜像的构建与管理方法。

milk5的博客 50

大鲸鱼—Docker 数据管理与镜像创建

Docker 镜像结构的分层Dockerfile 中的每个指令都会创建一个新的镜像层;镜像层将被缓存和复用;当Dockerfile 的指令修改了,复制的文件变化了,或者构建镜像时指定的变量不同了,对应的镜像层缓存就会失效;某一层的镜像缓存失效,它之后的镜像层缓存都会失效;镜像层是不可变的,如果在某一层中添加一个文件,然后在下一层中删除它,则镜像中依然会包含该文件,只是这个文件在 Docker 容器中不可见。

aran2002的博客 1016

CAD文件转换避坑指南:Inventor导出STP时这些设置千万别忽略

本文深入解析了使用Autodesk Inventor导出STP文件时的关键设置与避坑指南。重点探讨了应用协议选择、样条曲线拟合精度对几何保真度的影响,以及装配体结构和元数据的保全策略,旨在帮助用户实现高质量、零误差的CAD数据交付,避免下游软件打开时出现特征丢失或曲面破碎等问题。

weixin_29214559的博客 518

构建Java+Gradle环境的Docker镜像

构建Java+Gradle环境的Docker镜像的整体流程如下: 1、编写Dockerfile脚本文件,创建Docker镜像; 2、通过镜像启动容器,进行本地调试; 3、在本地容器中设置Java环境; 4、在本地容器中设置Gradle环境; 5、保存并上传镜像;

大前端程序员的自我修养 2331

AD在建PCB封装时如何添加元器件的3D模型

3D模型

k1ang的博客 1万+

使用ONNX Runtime在Java Web应用中部署深度学习模型

当应用场景需要集成深度学习模型进行推理时,直接在Java Web应用中集成深度学习框架可能会面临性能、兼容性等问题。为了将深度学习模型无缝集成到Java Web应用中,是一项广受认可且实用的方法。本篇文档将介绍如何将模型转换为ONNX格式,并通过ONNX Runtime Server进行部署,并通过Java Web应用调用以进行回归或预测任务。本方案的主要目标是实现以下功能:将PyTorch模型转换为ONNX格式。部署ONNX Runtime Server,加载ONNX模型并提供推理服务。

shysea2019的博客 8857

使用Docker打包镜像并发布

因为目前临近春节,不少同事都休假去了,我在公司没啥事情,所以就抽空把docker过了一遍。docker我现在的公司有在用,不过我在工作基本上就没有太多的对docker的使用,无非就是在dashboard上面拉拉日志什么的。相对于传统的打包发布来说,docker的最大特点就是方便快捷,你要装啥东西,几行命令就可以搞定的。比起传统的打包发布省去了很多装软件配环境的麻烦。

weixin_42032770的博客 6693

医疗影像技术实战:如何用Python快速生成DRR图像(附完整代码)

本文详细介绍了如何使用Python实现数字重建放射影像的快速生成。通过实战代码,从基础光线投射算法到性能优化,逐步讲解DRR图像生成的核心原理与工程实践,帮助开发者掌握医疗影像处理的关键技术,赋能放射治疗规划与图像引导手术等临床工具开发。

k8l9m0n的博客 72

大鲸鱼—通过docker构建基于LNMP的WordPress项目

【代码】大鲸鱼—通过docker构建基于LNMP的WordPress项目。

aran2002的博客 630

保姆级教程:在树莓派4B上用V4L2驱动USB摄像头(附完整代码)

本文提供树莓派4B上使用V4L2驱动USB摄像头的完整教程,涵盖环境配置、V4L2架构解析、代码实现及问题排查。通过详细步骤和完整代码示例,帮助开发者快速掌握嵌入式Linux下的摄像头驱动开发,解决实际应用中的兼容性和性能问题。

weixin_30312563的博客 382

PAM4信号测试实战:从眼图分析到误码率测量的技术演进

在高速数字系统设计中,信号完整性测试是确保数据传输可靠性的核心环节。其基本原理在于通过时域和频域分析,精确评估信号在传输过程中的质量衰减与失真。随着数据速率向56Gbps及以上演进,传统的NRZ编码面临带宽瓶颈,而PAM4调制技术通过在每个符号周期内承载更多比特信息,成为提升信道效率的关键路径。这项技术的工程价值在于,它允许在相同带宽下实现翻倍的数据吞吐量,这对于数据中心互联、PCIe 6.0及800G以太网等高速接口至关重要。然而,PAM4信号电平间距更小,对噪声和抖动极为敏感,导致其原始误码率显著升高,

weixin_42522817的博客 657

docker查询mysql 有哪些版本的镜像_Docker小鲸鱼

最近加班严重,很久没更新过文章了,有个小伙伴想了解docker,今天就随便写一下docker。docker很类似我们使用的虚拟机,docker会更轻量,可移植性更高。且现在很多公司都会有gitlab+docker+k8s做持续集成和持续交付(CI / CD)。Docker和k8s是不同的,如果说Docker是具体的业务实现,而业务是需要管理调度的,k8s便是掌舵的管理工具。更多优点玩法多搜搜资料看...

weixin_39781326的博客 808

深入详细分析Skyworks 78113 PAMiD射频方案图

是一种高集成度的射频前端模块,它结合了功率放大器(PA)、双工器(Duplexer)、滤波器和开关等多个组件,主要用于4G LTE移动通信系统中的射频前端链路。是一款典型的PAMiD模块,通过将多个频段的发射(TX)和接收(RX)路径集成在一个模块中,大大减少了传统射频设计中的分立器件,同时提高了信号链路的效率和可靠性。模块化设计的优势PCB空间优化:高集成度设计大幅减小了射频电路的尺寸,适用于紧凑型移动设备。减少设计复杂度:模块化设计减少了器件间的匹配与调试工作,加速产品开发周期。性能稳定性。

weixin_43199439的博客 1480

架构师应了解的Dockerfile 终极指南

本文是一篇详尽的Dockerfile终极指南,从架构师的角度来分析,旨在解决镜像臃肿、构建缓慢及不安全等常见痛点。文章从分层构建、上下文等核心原理入手,逐一精解了FROM、RUN、CMD/ENTRYPOINT等所有关键指令。核心部分聚焦于优化,重点传授了如何利用构建缓存、减小镜像体积,以及通过多阶段构建打造极致精简的生产镜像。最后,文章提供了Node.js、Java等多个真实世界的“配方”,并总结了安全最佳实践,帮助你从深层次掌握Dockerfile。

superfreeman的专栏 1129

【导航理论&实战篇】四足机器人弹簧倒立摆(SLIP)动力学模型

认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对四足机器人动力学模型-VMC、SLIP和浮动机体模型做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章四足机器人弹簧加载倒立摆(SLIP)动力学模型是一种用于描述和分析四足机器人在运动过程中动态特性的理论模型。这种模型将四足机器人的腿部简化为弹簧,而机器人的身体则被视为一个倒立摆,这样的抽象使得研究者能够更容易地分析和控制机器人的运动。提示:以下是本篇文章正文内容。

qq_35635374的博客 806

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Docker基础教程(九十六)Dockerfile的书写规范:Dockerfile求生指南:别再让镜像膨胀成“猪八戒”了!

Dockerfile是构建Docker镜像的蓝图,但糟糕的写法会让镜像臃肿如气球,安全漏洞遍地开花。本文深度解析Dockerfile的16条黄金法则,从基础指令到多阶段构建实战,教你写出比维密超模更“瘦”的镜像!附完整企业级Python项目示例,让你的容器既苗条又强悍。

jxf_jxfcsdn的博客 313

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

小鲸鱼的前世今生--Docker

小鲸鱼的前世今生--Docker

冷月心的博客 994

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Docker进阶——再次认识docker的概念 & Docker的结构 & Docker镜像结构 & 镜像的构建方式

本篇博客再次介绍docker的基本概念,拆解docker的结构,介绍常用的相关命令,给出了制作镜像的两种方式,并给出操作案例。

Arya的博客,专注后端领域 1306

Python容器化部署全流程:Dockerfile、compose与镜像瘦身实战

开发环境的“在我机器上能跑”问题,根源在于依赖与系统环境的不可控。容器化技术通过将应用、依赖库与运行时配置打包为标准镜像,实现了跨环境的一致交付。基于Linux命名空间与cgroup的轻量隔离机制,Docker容器启动快、资源占用小,成为解决Python项目部署痛点的主流方案。通过编写Dockerfile定义构建流程,利用多阶段构建将编译环境与运行环境分离,可将带C扩展依赖的镜像从GB级压缩至百MB级,同时提升安全性。对于依赖MySQL、Redis的Web应用,docker-compose以服务编排方式实现

weixin_29253711的博客 253

初识Docker:构建自己的镜像

为什么80%的码农都做不了架构师?>>> ...

weixin_33860553的博客 113

[特殊字符]Docker实战全攻略:从零构建、高效操作到镜像优化[特殊字符]

本文提供了一份全面的Docker实战指南,涵盖从零开始的安装配置、核心容器操作指令到生产级Dockerfile编写与镜像优化。通过详细的步骤解析和最佳实践,帮助开发者高效掌握Docker容器化技术,实现应用的快速部署与交付。

ll5678的博客 362
上一篇: 大鲸鱼—Docker 数据管理与镜像创建
下一篇: 大鲸鱼—Docker-harbor私有仓库部署与管理
早点睡吧zzz
博客等级 码龄3年 1813粉丝 114原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值