IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> springboot jar以及docker镜像太大问题解决方案 -> 正文阅读

[Java知识库]springboot jar以及docker镜像太大问题解决方案

?? ?每次更换jar包,只需要更替几百k即可,无需把依赖包加进去

? ? docker镜像过大
????????1、了解spring boot打包,期望将依赖的libs 和 业务代码拆分
????????2、优化dockerfile,充分利用缓存

以下只解决了依赖的libs 和 业务代码拆分,优化dockerfile后续补充


?? ?1、pom文件添加如下:
?? ?
?? ? ? ? ? ? ? ?<!-- ==================== 依赖jar 优化start ========================== -->
? ? ? ? ? ? <!-- lib包,打完一次后可以注释掉也可以不管,如果有新引入的jar包需要把lib包下的jar更新到服务器下,
? ? ? ? ? ? // ?压缩后jar包的启动指令 ? nohup java -Dloader.path="lib/" -jar xxx.jar &
? ? ? ? ? ? // ?未压缩jar包的启动指令 ? nohup java -jar xxx.jar &"
? ? ? ? ? ? -->
? ? ? ? ? ? <plugin>
? ? ? ? ? ? ? ? <groupId>org.apache.maven.plugins</groupId>
? ? ? ? ? ? ? ? <artifactId>maven-dependency-plugin</artifactId>
? ? ? ? ? ? ? ? <executions>
? ? ? ? ? ? ? ? ? ? <execution>
? ? ? ? ? ? ? ? ? ? ? ? <id>copy-dependencies</id>
? ? ? ? ? ? ? ? ? ? ? ? <phase>package</phase>
? ? ? ? ? ? ? ? ? ? ? ? <goals>
? ? ? ? ? ? ? ? ? ? ? ? ? ? <goal>copy-dependencies</goal>
? ? ? ? ? ? ? ? ? ? ? ? </goals>
? ? ? ? ? ? ? ? ? ? ? ? <configuration>
? ? ? ? ? ? ? ? ? ? ? ? ? ? <!-- 依赖包输出目录,将来不打进jar包里 -->
? ? ? ? ? ? ? ? ? ? ? ? ? ? <outputDirectory>${project.build.directory}/lib</outputDirectory>
? ? ? ? ? ? ? ? ? ? ? ? ? ? <excludeTransitive>false</excludeTransitive>
? ? ? ? ? ? ? ? ? ? ? ? ? ? <stripVersion>false</stripVersion>
? ? ? ? ? ? ? ? ? ? ? ? ? ? <includeScope>runtime</includeScope>
? ? ? ? ? ? ? ? ? ? ? ? </configuration>
? ? ? ? ? ? ? ? ? ? </execution>
? ? ? ? ? ? ? ? </executions>
? ? ? ? ? ? </plugin>
? ? ? ? ? ? <!-- 压缩jar包,打出来的jar中没有了lib文件夹 -->
? ? ? ? ? ? <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>
? ? ? ? ? ? </plugin>
? ? ? ? ? ? <!-- ==================== 依赖jar 优化end ========================== -->
?? ?

idea 中clean -->package 后, 项目目录中会多个target目录,里面多个lib目录,

?

docker部署:

如果是第一次使用docker,需先创建镜像参考:

????????CSDNicon-default.png?t=M7J4https://mp.csdn.net/mp_blog/creation/editor/126367264

把idea生成的lib、xxx.jar和配置文件application.yml、bootstrop.yml放入XXXApp目录下,后面? ?ADD ./XXXApp/* /home/XXX/XXXApp/会加入到容器中,

若已经使用docker部署过,无需在操作创建镜像。但也需要知道创建镜像后各个文件及其功能,不然后面列出的文件不清楚什么情况。

直接在docker-compose.yml中新增一条挂载(物理机和容器的映射关系)

? ?volumes:
? ? ? - "/home/docker/volumes/xxx_data/_data/lib/:/home/XXX/XXXApp/lib/"

把idea生成的lib中的jar放入/home/docker/volumes/xxx_data/_data/lib中,

xxx.jar和配置文件application.yml、bootstrop.yml放入/home/docker/volumes/xxx_data/_data/中

然后在启动脚本startup.sh中加上对lib的依赖命令:

java -Dloader.path=lib/ -jar xxx.jar

查看容器id:docker ps -a?

?

根据容器id,启动docker:

????????docker restart?g46546fg434g? ? ?或者?

? ? ? ? docker stop g46546fg434g? ? ?docker start?g46546fg434g? ? ?

启动后,进入容器中 :docker exec -it?g46546fg434g? ? /bin/bash

若进入容器失败,例如报

Error response from daemon: Container 630ebe592507cf829058848019a1580d4ab81f6b58ace40c3454562becd95918 is restarting, wait until the container is running

解决方法思路:

? ? ? ? 查看docker 日志:
?? ? ? ?docker logs g46546fg434g? ? ?

? ? ? ? 根据报错原因,解决问题

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-09-04 00:56:31  更:2022-09-04 00:56:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 13:15:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码