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