当前位置: 首页 > news >正文

docker:将cas、tomcat、字体统一打包成docker容器

本文介绍了使用Docker容器化部署CAS登录认证系统的实践方案。针对传统Tomcat部署中字体文件和依赖包缺失的问题,作者采用Docker技术将应用、Tomcat 9.0.31、字体文件及Java17环境打包成统一镜像。详细说明了基于eclipse-temurin:17-jdk基础镜像构建的Dockerfile配置,包括字体文件复制、时区设置和卷挂载等关键步骤。通过docker buildx命令构建cas:1.1镜像并保存为tar文件,最后演示了容器运行和日志目录挂载的部署方法。该方案有效解决了环境差异问题,提高了部署效率和系统稳定性。

一、环境

docker:28.2.2

tomcat:9.0.31

操作系统:Ubuntu 24.04.2 LTS

二、原因

      在新建项目需要对接 CAS 登录认证时,按照以往经验,通常只需将应用部署到 Tomcat 并复制相关字体文件至服务器即可。但这种方式容易出现字体无法正常识别或依赖包缺失等问题,导致应用运行异常。
为解决此类环境不一致带来的风险,我将应用、Tomcat 及所需字体和依赖打包成一个 Docker 镜像。通过容器化部署,确保运行环境的一致性和可移植性,从根本上避免缺包或字体加载失败等问题,提升部署效率与系统稳定性。

三、制作Dockerfile文件

vi Dockerfile

# 使用包含 Java 17 的基础镜像
FROM eclipse-temurin:17-jdk
# 安装 vi 编辑器
RUN apt-get update && \
apt-get install -y vim && \
rm -rf /var/lib/apt/lists/*

# Copy Tomcat(这里我们直接使用官方Tomcat镜像作为例子)
# 将dmsfonts目录复制到/usr/share/fonts
COPY apache-tomcat-9.0.31-8068 /home/apache-tomcat-9.0.31-8068
# 将dmsfonts目录复制到/usr/share/fonts
COPY dmsfonts /usr/share/fonts/dmsfonts

# 设置工作目录
WORKDIR /home/apache-tomcat-9.0.31-8068

# 作者信息
LABEL maintainer="victory <32238170@qq.com>"
# VOLUME 指定映射出来的webapps和logs目录
VOLUME /home/apache-tomcat-9.0.31-8068/webapps
VOLUME /home/apache-tomcat-9.0.31-8068/logs

# 设置时区
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' > /etc/timezone

# 启动Tomcat服务
CMD ["./bin/catalina.sh", "run"]

 四、编译

docker buildx build -t cas:1.1 .

注:注意最后一个“.” 

部分说明
dockerDocker 的主命令行工具。
buildxDocker 的一个高级构建工具,是 build 命令的增强版,基于 BuildKit 引擎。它支持更多功能,如多平台构建、缓存管理、更高效的构建流程等。
buildbuildx 的子命令,表示“开始构建一个镜像”。
-t cas:1.1给构建出的镜像打上标签(tag)。<br> - cas 是镜像名称。<br> - 1.1 是版本标签(tag),用于标识镜像的版本。<br> 合起来 cas:1.1 表示“名为 cas 的镜像,版本为 1.1”。
.指定构建上下文(build context)的路径,这里是一个点,表示“当前目录”。<br> Docker 会从当前目录中读取 Dockerfile 文件,并将该目录下的所有文件作为上下文发送给构建引擎。

 五、将docker保存到磁盘

docker save 142681cc7bda -o /home/product_app/dockers/cas.tar cas:1.1 

六、运行

加载容器

docker load  cas:1.1

运行容器
docker  run -dit --name cas -p  8067:8068  -v /home/product_app/dockers/cas/logs:/home/apache-tomcat-9.0.31-8068/logs cas:1.1

http://www.lryc.cn/news/605391.html

相关文章:

  • QT---》文件MD5码的获取与验证
  • 结合C++红黑树与AI人工智能的应用
  • Linux启动防火墙提示提示 Active: failed (Result: timeout)
  • 7.pcl滤波(一)
  • IFCVF驱动+vhost-vfio提高虚拟机网络性能
  • 在线免疫浸润分析
  • Kimi-K2技术报告解读:万亿参数大模型,开源模型新SOTA
  • 如何判断一个数据库是不是出问题了?
  • STM32F1 Flash的操作
  • Python Day19 时间模块 和 json模块 及例题分析
  • C语言15-构造数据类型、位运算符、内存管理
  • 2018 年 NOI 最后一题题解
  • yolo8+阿里千问图片理解(华为简易版小艺看世界)
  • CSS 工作原理
  • 卡尔曼滤波通俗入门:预测、测量与最优融合
  • 重生之我在暑假学习微服务第五天《Docker部署项目篇》
  • 【人工智能99问】混合专家模型(MoE)是如何训练的?(18/99)
  • lesson28:Python单例模式全解析:从基础实现到企业级最佳实践
  • QT笔记--》QMenu
  • Java String类练习
  • 编程算法:从理论基石到产业变革的核心驱动力
  • 数字化转型-制造业未来蓝图:“超自动化”工厂
  • HTTPS基本工作过程:基本加密过程
  • List 接口
  • 基于动态权重-二维云模型的川藏铁路桥梁施工风险评估MATLAB代码
  • 人形机器人_双足行走动力学:基于OpenSim平台的股骨模型与建模
  • Python并发与性能革命:自由线程、JIT编译器的深度解析与未来展望
  • pytorch入门2:利用pytorch进行概率预测
  • C++中sizeof运算符全面详解和代码示例
  • sqli-labs:Less-5关卡详细解析