Spring Boot应用的打包和部署
现在的IT开发,DevOps渐渐获得技术管理人员支持、云计算从ECS转向Docker容器技术、微服务的概念和讨论也越来越热,以上这些研究方面,最终都聚焦于软件的打包、分发和部署上。
[Twelve-Factor App]开发方法这一系列的博文主要讲述了一个现代的SaaS应用是如何被构建和部署的,其中一个关键的原则是:分离配置定义和应用程序。
DevOps开发模型要求开发人员管理应用程序的开发、测试、打包和部署等所有流程,当然,必须确保这些步骤的执行足够简单和可控,否则开发人员都没有时间维护软件和开发新功能了。要实现DevOps模型,需要简洁、隔离的应用程序包,这种应用程序自带运行容器、可以当做进程一样一键运行,并且不需要重新构建就部署到不同的机器上。
一、创建基于Spring Boot框架的可执行Jar包Spring Boot开发的应用可以打包为单独的JAR包,然后通过java -jar name .jar命令运行。接下来我们基于之前练习使用的应用程序,看看如何构建Spring Boot Uber JAR。
Note:Uber JAR是将应用程序打包到单独的jar包中,该jar包包含了应用程序依赖的所有库和二进制包。
How Do 通过mvn clean package命令打包应用程序 通过命令java -jar target/bookpub-0.0.1-SNAPSHOT.jar运行程序![1240](http://upload-images.jianshu.io/upload_images/44770-871eee7576d81b67.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
运行Jar启动Java web应用
如上所示,打包成可执行的jar包这种方法相当直观,背后的工作由spring-boot-maven-plugin插件实现:先通过maven-shade-plugin生成一个包含依赖的jar,再通过spring-boot-maven-plugin插件把spring boot loader相关的类,还有MANIFEST.MF打包到jar里。关于Spring Boot的启动原理分析,详见spring boot应用启动原理分析一文。
总结下Spring Boot应用的启动流程:(1)spring boot应用打包之后,生成一个fat jar,里面包含了应用依赖的jar包,还有Spring boot loader相关的类;(2)Fat jar的启动Main函数是JarLauncher,它负责创建一个LaunchedURLClassLoader来加载/lib下面的jar,并以一个新线程启动应用的Main函数。
二、创建Docker镜像可以参考我之前写的一篇文章:Docker with Spring Boot
Spring Boot(十二):Spring Boot 如何测试打包部署(下) 有很多网友会时不时的问我, Spring Boot 项目如何测试,如何部署,在生产中有什么好的部署方案吗?这篇文章就来介绍一下 Spring Boot 如何开发、调试、打包到最后的投产上线。
Spring Boot(十二):Spring Boot 如何测试打包部署(中) 有很多网友会时不时的问我, Spring Boot 项目如何测试,如何部署,在生产中有什么好的部署方案吗?这篇文章就来介绍一下 Spring Boot 如何开发、调试、打包到最后的投产上线。
Spring Boot(十二):Spring Boot 如何测试打包部署(上) 有很多网友会时不时的问我, Spring Boot 项目如何测试,如何部署,在生产中有什么好的部署方案吗?这篇文章就来介绍一下 Spring Boot 如何开发、调试、打包到最后的投产上线。
阿里特邀专家徐雷Java Spring Boot开发实战系列课程(第18讲):制作Java Docker镜像与推送到DockerHub和阿里云Docker仓库 立即下载
相关文章
- eclipse安装spring tool suite插件
- spring-boot打包,引入外部jar包问题
- Spring系列.ApplicationContext接口
- 【Spring Boot】Spring Boot之自定义拦截器
- ssh(Spring+Spring mvc+hibernate)——applicationContext-servlet.xml
- spring boot:创建一个简单的web(maven web project)
- spring boot: spring-data-jpa (Repository/CrudRepository) 数据库操作, @Entity实体类持久化
- spring boot常用注解
- spring的了解以及简单框架的搭建
- [Spring Boot ] Creating the Spring Boot Project : Demo: Creating a REST Controller
- SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
- spring boot:actuator的安全配置:使用spring security做ip地址限制(spring boot 2.3.2)
- spring boot:用redis+redisson实现分布式锁(redisson3.11.1/spring boot 2.2)
- spring boot前后端参数传递方式
- intellij idea 2021.2 打包并上传运行一个spring boot项目(spring boot 2.5.4)
- 学习Spring Boot:(十八)Spring Boot 中session共享
- [1] Spring.Net
- 018-Spring Boot Starter开发
- Spring Boot Thymeleaf示例
- spring boot中打包插件spring-boot-maven-plugin和maven-jar-plugin的关联
- Spring Boot 配置日志输出等级