Spring Boot应用Docker化的步骤详解

作者:hansonwang99 时间:2023-10-12 11:47:36 

概述

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服务,外加各种基础设施、数据库、通信、中间件以及调度来构成,每个子元素的开发也依然遵循这里的基本流程。

来源:https://segmentfault.com/a/1190000014332179

标签:spring,boot,docker
0
投稿

猜你喜欢

  • Java轻松掌握面向对象的三大特性封装与继承和多态

    2021-07-27 02:39:11
  • MyBatis图文并茂讲解注解开发一对多查询

    2023-02-18 08:18:40
  • java自定义ClassLoader加载指定的class文件操作

    2022-03-16 16:19:07
  • c# 复写Equals方法的实现

    2023-06-09 01:35:35
  • Java模拟死锁发生之演绎哲学家进餐问题案例详解

    2022-10-09 22:52:44
  • C#调用Java方法实例详解

    2021-10-16 22:50:20
  • springboot @ConfigurationProperties和@PropertySource的区别

    2023-06-12 07:18:14
  • java写卷积神经网络(CupCnn简介)

    2022-12-11 09:33:09
  • Java深入讲解二十三种设计模式之中的策略模式

    2022-11-25 13:23:15
  • Java Runnable和Thread实现多线程哪个更好你知道吗

    2021-08-17 05:48:50
  • Android 检测键盘显示或隐藏键盘的实现代码

    2022-09-08 09:14:05
  • 弹出一个带确认和取消的dialog实例

    2023-11-22 06:07:13
  • 一文彻底搞懂Kotlin中的协程

    2021-09-19 19:16:01
  • C#实现IP摄像头的方法

    2023-12-09 03:42:51
  • C#下使用XmlDocument操作XML详解

    2022-08-27 16:38:53
  • Java调用Shell命令和脚本的实现

    2023-11-29 00:59:09
  • C#中委托的+=和-=深入研究

    2023-05-31 01:00:15
  • Android4.4开发之电池低电量告警提示原理与实现方法分析

    2022-06-17 19:52:39
  • Java中BeanUtils.copyProperties基本用法与小坑

    2021-11-04 22:09:01
  • 浅谈C# 抽象类与开闭原则

    2023-11-07 11:00:08
  • asp之家 软件编程 m.aspxhome.com