现在的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运行程序

    运行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应用的打包和部署相关推荐

  1. spring Boot 2 运维篇(spring boot程序的打包与部署,多环境开发配置文件的配置,spring boot集成日志框架)

    目录 1.SpringBoot程序的打包与运行 程序打包 程序运行 SpringBoot程序打包失败处理 命令行启动常见问题及解决方案 SpringBoot项目快速启动(Linux版) 2.配置高级 ...

  2. Spring Boot+Vue项目打包部署

    在前后端分离的项目中,最后前后端项目开发完毕都需要进行打包部署发布到服务器上面运行,所以需要对前端开发的项目进行打包,然后将打包后的文件放在spring boot项目中的resource/static ...

  3. Docker基础篇 - (六)Docker 网络Spring Boot微服务打包Docker镜像

    ⑦ Docker 网络 7.1 理解Docker0 清空下前面的docker 镜像.容器 # 删除全部容器 [root@cVzhanshi tomcat-diy]# docker rm -f $(do ...

  4. spring boot项目Intellij 打包

    spring boot项目Intellij 打包 学习了:http://blog.csdn.net/hzt_fighting_up/article/details/78174291 在edit con ...

  5. (转)Spring Boot(十二):Spring Boot 如何测试打包部署

    http://www.ityouknow.com/springboot/2017/05/09/spring-boot-deploy.html 有很多网友会时不时的问我, Spring Boot 项目如 ...

  6. IDEA打包spring boot工程为war包并部署到阿里云服务器

    一.打包 1.首先修改pom.xml中的代码,把<packaging></packaging>中的jar改为war 2.点击IDEA左下角按钮,之后点击右侧边栏的Maven P ...

  7. 居然仅用浏览器,就完成了Spring Boot应用的开发与部署!

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 最近有幸试用了一下阿里云的一个新产品:云开发平台,体验一 ...

  8. spring boot 项目打成war包部署到服务器

    这是spring boot学习的第二篇了,在上一篇已经整合了spring boot项目了,如果还有小伙伴没有看得可以先去看第一篇 基础整合spring boot项目 到这里的小伙伴应该都是会整合基本的 ...

  9. git上托管的代码如何部署在阿里云上_居然仅用浏览器搞定Spring Boot应用的开发与部署...

    最近有幸试用了一下阿里云的一个新产品:云开发平台,体验一把全新的开发模式!虽然中间也碰到了一些问题,但整体的体验透露着未来感,因为整个过程都不需要使用我们最常用的IDEA,仅依靠浏览器就把一个Spri ...

最新文章

  1. 2016计算机二级java_2016计算机二级JAVA练习题及答案
  2. python之路-day11-迭代器闭包
  3. 简单分析Flask 数据库迁移详情
  4. [PLL][PM]锁相环模拟相位解调
  5. 借用构造函数 组合继承 拷贝继承 总结继承
  6. python if else用法_python列表推导式中使用if-else
  7. 电力三维基础信息平台
  8. HTML文字阴影荧光,小编,文章里的“发光”文字怎么做的?
  9. Linux部署django项目最全,linux部署django项目流程(全)
  10. ajax2 cors跨域,Koa2框架应用CORS完成跨域ajax要求
  11. python中死循环有用吗_Python里是否存在死循环
  12. python抬笔_『怎样在python里让海龟画图抬笔落笔?』
  13. namespace的作用及用法
  14. 框架协议、合同的下达
  15. 服务器系统装显卡驱动,windows2019服务器系统安装显卡驱动(A卡篇)
  16. 苹果屏幕尺寸_iPhone 12屏幕维修价格出炉,买得起伤不起?
  17. 第7章第23节:双图排版:两张图片的错位叠加 [PowerPoint精美幻灯片实战教程]
  18. html遮罩层动画制作,flash简单制作遮罩动画效果
  19. FastAdmin 多表联查 踩坑
  20. 对AVL树和红黑树的个人理解

热门文章

  1. 使用Apache Commons IO组件读取大文件
  2. 递归获取字符串内的所有图片src地址
  3. H5学习之旅-H5的表单(11)
  4. C# 线程的各种知识,和使用方法
  5. Spring自学日志00(Spring配置文件头及xsd文件版本浅析)
  6. android 通知打开app,Android打开通知栏并回到主页的几种方式
  7. 用Java描述数据结构之线性表的链式存储(链表),模拟LinkedList实现
  8. android注册广播两种方式,Android 注册广播的两种方式对比
  9. centos 删除crontab_Centos7 利用crontab定时执行任务及配置方法
  10. xss绕过字符过滤_XSS绕过实战练习