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

Jenkins运维之路(容器项目的优化)

前面在容器化的过程中是在主机打包,然后使用Dockerfile将打包的内容进行从新构建,得到项目容器来进行部署,虽然能正常部署使用,但是总感觉项目镜像有些大,所以决定进行瘦身。瘦身过程大体如下。

  • • 构建工具容器化(可以配合多段构建)。
  • • 使用多段构建(有效的减小了项目体积)。
  • • JDK运行环境改为JRE(多段构建最后运行应用的镜像不必使用jdk,如果还不知道jdk和jre有什么区别,到网上查)。

1.构建CICD工具容器

注意maven的配置你自己根据你自己的情况修改,比如使用阿里云还是私服。

# 构建目录结构
root@ubuntu2204test99:~/cicd_images/cicd_jdk21_go_mvn3911_node22_sonarq5_docker284# tree -L 1
.
├── docker
├── Dockerfile
├── go
├── jdk-21.0.8
├── maven-3.9.11
├── node-v22.19.0
└── sonar-scanner-5.0.2.4997# Dockerfile文件# 我使用自己的私服镜像进行构建
FROM harbor.xxxxxx.top/devops/cicd-ubuntu2404-base:v1# 安装 Git 并清理缓存
RUN apt-get update && \apt-get install -y git && \apt-get clean && \rm -rf /var/lib/apt/lists/*COPY go /usr/local/go
COPY jdk-21.0.8 /usr/local/jdk-21.0.8
COPY maven-3.9.11 /usr/local/maven-3.9.11
COPY node-v22.19.0 /usr/local/node-v22.19.0
COPY sonar-scanner-5.0.2.4997 /usr/local/sonar-scanner-5.0.2.4997
COPY docker/docker /usr/bin/docker# 设置环境变量
ENV JAVA_HOME=/usr/local/jdk-21.0.8
ENV SCANNER_HOME=/usr/local/sonar-scanner-5.0.2.4997
ENV MAVEN_HOME=/usr/local/maven-3.9.11
ENV NODE_HOME=/usr/local/node-v22.19.0
ENV GO_HOME=/usr/local/go# 更新 PATH 和 CLASSPATH
ENV PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin:$NODE_HOME/bin:$GO_HOME/bin:$SCANNER_HOME/bin
ENV CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV NODE_OPTIONS=--max_old_space_size=2048# 设置 Go 和 npm 的国内源
RUN go env -w GO111MODULE=on && \go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/,direct && \npm config set registry http://mirrors.cloud.tencent.com/npm/# 使用 bash 启动容器
CMD ["/bin/bash"]

2. 更新Dockerfile进行多段构建

FROM harbor.xxxxxx.top/devops/cicd-ubuntu2404-base:v1 AS builder
WORKDIR /build
COPY . .
RUN mvn clean package -DskipTestsFROM harbor.xxxxxx.top/devops/ubuntu/jre:21-24.04
WORKDIR /app
COPY --from=builder /build/target/spring-boot-3-hello-world-1.0.0-SNAPSHOT.jar /app/spring-boot-3-hello-world-1.0.0-SNAPSHOT.jar
ENTRYPOINT ["java", "-jar", "spring-boot-3-hello-world-1.0.0-SNAPSHOT.jar"]

3.效果

构建后容器容量由原来的460M左右缩减到170M,这个大小就比较合理了

image-20250917094738845

image-20250917094738845


文章转载自:

http://Y0uAEcZd.czrcf.cn
http://TffvmjWx.czrcf.cn
http://iLEuD4q2.czrcf.cn
http://NPJh4MUy.czrcf.cn
http://aJsCkxhY.czrcf.cn
http://ahWabiHW.czrcf.cn
http://H9aWkfBa.czrcf.cn
http://pspueYK1.czrcf.cn
http://Dpk9E4Z5.czrcf.cn
http://aRae5zIs.czrcf.cn
http://ifNOD03v.czrcf.cn
http://473OArRO.czrcf.cn
http://CaIUmNLk.czrcf.cn
http://iISWyoQ0.czrcf.cn
http://JafPVqjr.czrcf.cn
http://zz6a3O9Y.czrcf.cn
http://dFCJEw91.czrcf.cn
http://UvWzbvN4.czrcf.cn
http://Z11ZDe2C.czrcf.cn
http://58StmEhs.czrcf.cn
http://ZyF6D6E0.czrcf.cn
http://h0HlncJU.czrcf.cn
http://xO2yZoL8.czrcf.cn
http://0wZ0yp96.czrcf.cn
http://9FipCch2.czrcf.cn
http://WiFAfeFI.czrcf.cn
http://X1S9nI4X.czrcf.cn
http://gfh1CEce.czrcf.cn
http://k6yuiOeN.czrcf.cn
http://mXGfuqsS.czrcf.cn
http://www.dtcms.com/a/387877.html

相关文章:

  • 【精品资料鉴赏】363页智慧旅游大数据平台项目建设设计方案
  • 软考 系统架构设计师系列知识点之杂项集萃(149)
  • MyBatis 中注解操作与 XML 映射文件操作的对比
  • 复杂 PDF 文档如何高效解析?
  • 加密网络流量分类
  • leetcode算法题记录:
  • VS安装后通过vswhere.exe查询显示的 installationVersion数字怎么不是2022?
  • 光伏电站安全 “守护神”:QB800 绝缘监测平台,为清洁能源高效运行筑固防线
  • STC携手非小号 Talking Web3,海上ALPHA WEB3派对启航
  • AR技术突破:极端环境下设备的创新与应用
  • R---------split()` 函数
  • 和为K的子数组-前缀和+哈希
  • ITSM产品推荐:甄知科技燕千云与主流方案对比分析
  • 线性回归与 Softmax 回归核心知识点总结
  • OpenLayers数据源集成 -- 章节十八:GML图层详解:OGC标准地理标记语言的完整集成与智能样式渲染方案
  • 线性回归与 Softmax 回归核心内容总结
  • 【数据分享】各省农业新质生产力数据(2012-2023)
  • 整理SpringBoot实现文件上传所需的知识
  • Cesium 加载ArcGIS 地图源到国内地图源的切换
  • 2010/12 JLPT听力原文 问题四
  • html页面转PDF
  • day3 MySOL多表操作
  • 触觉智能RK3576开发板OpenHarmony开源鸿蒙系统USB控制传输功能示例
  • 阿里云开源通义 DeepResearch!轻量级 AI 代理性能对标 OpenAI,系统性技术创新赋能研究能力​
  • WSL Git Clone 项目识别 `.git` 问题记录
  • openHarmony之开源三方库zlib适配讲解
  • GitHub开源免费PDF编辑器推荐:告别破解,高效编辑PDF
  • 贪心算法应用:社交网络影响力最大化问题详解
  • 更改 Compose 应用程序以适应不同环境
  • 大模型——GPT-5-Codex 发布,可以7小时连续编程,但OpenAI 封杀了API