Spring Boot应用Docker化的步骤详解
概述
SpringBoot简化了Spring应用的开发过程,遵循约定优先配置的原则提供了各类开箱即用(out-of-the-box)的框架配置。另一方面,SpringBoot还具备将代码直接构建为可执行jar包的能力,这个jar包是一个可以独立运行的部署单元。基于以上特性,现在普遍认为SpringBoot提供了一种快速构造微服务(Micro-Service)的能力。
当下web服务端开发中最火的名词中绝对有微服务的一席之地,其也成为当下互联网后端服务架构演进历程中最闪亮的技术之一。微服务的基本思想在于考虑围绕着业务领域组件来创建应用,这些应用可独立地进行开发、管理和加速。在分散的组件中使用微服务云架构和平台,使部署、管理和服务功能交付变得更加简单。既然服务被分割和微小化了,我们很容易想到如果将其和docker结合,让docker承载着一个个的微服务运行,如此一来将会让服务间耦合度降低,部署简洁,同时系统的架构也更加清晰,便于长期演进,基于此想法有了这篇文章的入门实践!
创建基于maven的springbt项目
pom.xml中加依赖:
org.springframework.boot spring-boot-starter-parent 2.0.0.RELEASE org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-test test
我们只需要在启动类中添加一个简单的restful接口就行了,为了后续浏览器能验证一下,访问/hello接口,能向浏览器返回一个HelloDocker!的问好!
@RestController publicclassDockerDemoSpringApplication{ publicstaticvoidmain(String[]args){ SpringApplication.run(DockerDemoSpringApplication.class,args); } @RequestMapping("/hello") publicStringhello(){ return"Hello!Docker!”; } }
编写Dockerfile
我们在SpringBt项目的根目录下建立Dockerfile,用起来完成Docker镜像构建的编排:
FROMmaven:3.3.3 ADDpom.xml/tmp/build/ RUNcd/tmp/build&&mvn-qdependency:resolve ADDsrc/tmp/build/src #构建应用 RUNcd/tmp/build&&mvn-q-DskipTests=truepackage\ #拷贝编译结果到指定目录 &&mvtarget/*.jar/app.jar\ #清理编译痕迹 &&cd/&&rm-rf/tmp/build VOLUME/tmp EXPOSE8080 ENTRYPOINT["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar”]
进入Docker的世界
- 0x01.在Spring项目根目录下根据Dockerfile来生成docker镜像
dockerbuild-tspringindocker. - 0x02.从刚创建的镜像来启动容器
dockerrun-d-p8080:8080springindocker - 0x03.打开浏览器,或者使用curl访问http://127.0.0.1:8080就可以看到web服务器里返回的HelloDocker!!!问好的字符了
至此就说明你成功将一个基于SpringBoot的应用Docker化了。
本文虽然只是以一个Demo,但一个大型的web项目无非也就是由诸多这种Rest服务,外加各种基础设施、数据库、通信、中间件以及调度来构成,每个子元素的开发也依然遵循这里的基本流程。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对毛票票的支持。