软件下载网站哪个好用,网络服务提供者发现未成年秘密信息应采取,长春网站建设费用,电商详情页设计模板前面在容器化的过程中是在主机打包#xff0c;然后使用Dockerfile将打包的内容进行从新构建#xff0c;得到项目容器来进行部署#xff0c;虽然能正常部署使用#xff0c;但是总感觉项目镜像有些大#xff0c;所以决定进行瘦身。瘦身过程大体如下。• 构建工具容器化(可以…
前面在容器化的过程中是在主机打包然后使用Dockerfile将打包的内容进行从新构建得到项目容器来进行部署虽然能正常部署使用但是总感觉项目镜像有些大所以决定进行瘦身。瘦身过程大体如下。• 构建工具容器化(可以配合多段构建)。• 使用多段构建(有效的减小了项目体积)。• JDK运行环境改为JRE(多段构建最后运行应用的镜像不必使用jdk如果还不知道jdk和jre有什么区别到网上查)。
1.构建CICD工具容器
注意maven的配置你自己根据你自己的情况修改比如使用阿里云还是私服。# 构建目录结构
rootubuntu2204test99:~/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_size2048# 设置 Go 和 npm 的国内源
RUN go env -w GO111MODULEon \go env -w GOPROXYhttps://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 --frombuilder /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