Spring Boot应用Docker化的步骤详解

 更新时间:2018年04月18日 11:47:30   作者:hansonwang99  
这篇文章主要给大家介绍了关于Spring Boot应用Docker化的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。

概述

Spring Boot简化了Spring应用的开发过程,遵循约定优先配置的原则提供了各类开箱即用(out-of-the-box)的框架配置。另一方面,Spring Boot还具备将代码直接构建为可执行jar包的能力,这个jar包是一个可以独立运行的部署单元。基于以上特性,现在普遍认为Spring Boot提供了一种快速构造微服务(Micro-Service)的能力。

当下web服务端开发中最火的名词中绝对有微服务的一席之地,其也成为当下互联网后端服务架构演进历程中最闪亮的技术之一。微服务的基本思想在于考虑围绕着业务领域组件来创建应用,这些应用可独立地进行开发、管理和加速。在分散的组件中使用微服务云架构和平台,使部署、管理和服务功能交付变得更加简单。既然服务被分割和微小化了,我们很容易想到如果将其和docker结合,让docker承载着一个个的微服务运行,如此一来将会让服务间耦合度降低,部署简洁,同时系统的架构也更加清晰,便于长期演进,基于此想法有了这篇文章的入门实践!

创建基于maven的spring bt项目

pom.xml中加依赖:

<parent>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-parent</artifactId>
 <version>2.0.0.RELEASE</version>
</parent>
<dependencies>
  <dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
 </dependency>
 <dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-test</artifactId>
  <scope>test</scope>
 </dependency>
</dependencies>

我们只需要在启动类中添加一个简单的restful接口就行了,为了后续浏览器能验证一下,访问/hello接口,能向浏览器返回一个 Hello Docker!的问好!

@RestController
public class DockerDemoSpringApplication {
 public static void main(String[] args) {
  SpringApplication.run(DockerDemoSpringApplication.class, args);
 }

 @RequestMapping("/hello")
 public String hello(){
  return "Hello! Docker!”;
 }
}

编写Dockerfile

我们在Spring Bt项目的根目录下建立Dockerfile,用起来完成Docker镜像构建的编排:

FROM maven:3.3.3

ADD pom.xml /tmp/build/

RUN cd /tmp/build && mvn -q dependency:resolve

ADD src /tmp/build/src
  #构建应用

RUN cd /tmp/build && mvn -q -DskipTests=true package \
  #拷贝编译结果到指定目录
  && mv target/*.jar /app.jar \
  #清理编译痕迹
  && cd / && rm -rf /tmp/build

VOLUME /tmp
EXPOSE 8080
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar”]

进入Docker的世界

  • 0x01. 在Spring项目根目录下根据Dockerfile来生成docker镜像
    docker build -t springindocker .
  • 0x02. 从刚创建的镜像来启动容器
    docker run -d -p 8080:8080 springindocker
  • 0x03. 打开浏览器,或者使用 curl 访问http://127.0.0.1:8080就可以看到web服务器里返回的Hello Docker!!!问好的字符了

至此就说明你成功将一个基于 Spring Boot 的应用 Docker 化了。

本文虽然只是以一个Demo,但一个大型的web项目无非也就是由诸多这种Rest服务,外加各种基础设施、数据库、通信、中间件以及调度来构成,每个子元素的开发也依然遵循这里的基本流程。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

相关文章

  • Java Set接口及常用实现类总结

    Java Set接口及常用实现类总结

    Collection的另一个子接口就是Set,他并没有我们List常用,并且自身也没有一些额外的方法,全是继承自Collection中的,因此我们还是简单总结一下,包括他的常用实现类HashSet、LinkedHashSet、TreeSet的总结
    2023-01-01
  • 全面解析SpringBoot文件上传功能

    全面解析SpringBoot文件上传功能

    这篇文章主要为大家全面解析SpringBoot文件上传功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • Java 使用maven实现Jsoup简单爬虫案例详解

    Java 使用maven实现Jsoup简单爬虫案例详解

    这篇文章主要介绍了Java 使用maven实现Jsoup简单爬虫案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-09-09
  • Java Socket 编程详解

    Java Socket 编程详解

    Java Socket 编程是指使用 Java 语言进行网络通信的过程,包括建立连接、传输数据和关闭连接等操作,本文将详细介绍Java Socket编程,需要的朋友可以参考下
    2023-05-05
  • Mybatis与Ibatis的区别

    Mybatis与Ibatis的区别

    这篇文章主要介绍了Mybatis与Ibatis的区别,需要的朋友可以参考下
    2016-05-05
  • java多线程文件下载器的实现

    java多线程文件下载器的实现

    本文主要介绍了java多线程文件下载器的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-11-11
  • Java中调用Python的实现示例

    Java中调用Python的实现示例

    本文主要介绍了Java中调用Python的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • java中volatile关键字的作用详解

    java中volatile关键字的作用详解

    这篇文章主要介绍了java中volatile关键字的作用详解,volatile可以保证,若一个线程改变了某块内存的值,其他线程是可见的,以至于其他线程能及时更新这块内存,需要的朋友可以参考下
    2023-09-09
  • JVM教程之Java代码编译和执行的整个过程(二)

    JVM教程之Java代码编译和执行的整个过程(二)

    这篇文章主要介绍了JVM学习笔记第二篇,关于Java代码编译和执行的整个过程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • SpringBoot整合Swagger接口文档工具的流程步骤

    SpringBoot整合Swagger接口文档工具的流程步骤

    我们在开发接口的时候,会将接口文档给前端的开发者进行对接,我们可以通过Postman或者Yapi等接口管理工具进行编写管理,实际开发中,接口的管理确实也应该通过专业的工具管理,本文,我们就来谈谈怎么在SpringBoot整合Swagger接口文档工具
    2023-08-08

最新评论