jar 包和 lib 依赖分离,部署包缩小100倍
一、场景
docker 部署
Spring boot 项目jar包几百M
问题:如何缩小项目jar包,提高上传速度
二、思路
将依赖库提前打包即可,后续改动没有新增加依赖的情况下,如果有改动需重新打包依赖库
三、实战
1、项目 jar 包解压获取 lib + config
- 正常打包获取 jeecg-system-start-3.6.0.jar
- 桌面解压 获取如下文件
- 获取 lib + config
-
将 BOOT-INF 下的 lib 包拿出单独存放
-
将 BOOT-INF\classes 下的 yml 文件存放到 config
2、获取简化版项目jar包
- 修改pom.xml文件移除lib
<!--方案一:常规Jar部署方案--> <!-- <build>--> <!-- <plugins>--> <!-- <plugin>--> <!-- <groupId>org.springframework.boot</groupId>--> <!-- <artifactId>spring-boot-maven-plugin</artifactId>--> <!-- </plugin>--> <!-- </plugins>--> <!-- </build>--> <!--方案二:JAR分离打包部署--> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <layout>ZIP</layout> <includes> <include> <groupId>nothing</groupId> <artifactId>nothing</artifactId> </include> </includes> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
3、打包项目
-
IDEA中 -- Maven -- 运行 clean -- install -- 获取 jar
4、编写dockerfile
FROM openjdk:8 RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime COPY ./config /config COPY ./lib /lib ADD donger-mom-mes-3.0-executor.jar mes.jar ENTRYPOINT ["java","-Dloader.path=/lib","-jar","mes.jar"]
5、执行打包命令
docker build ./ -t mes