摘要:微服务的基本思想在于考虑围绕着业务领域组件来创建应用,这些应用可独立地进行开发管理和加速。在分散的组件中使用微服务云架构和平台,使部署管理和服务功能交付变得更加简单。
当下web服务端开发中最火的名词中绝对有微服务的一席之地,其也成为当下互联网后端服务架构演进历程中最闪亮的技术之一。微服务的基本思想在于考虑围绕着业务领域组件来创建应用,这些应用可独立地进行开发、管理和加速。在分散的组件中使用微服务云架构和平台,使部署、管理和服务功能交付变得更加简单。既然服务被分割和微小化了,我们很容易想到如果将其和docker结合,让docker承载着一个个的微服务运行,如此一来将会让服务间耦合度降低,部署简洁,同时系统的架构也更加清晰,便于长期演进,基于此想法有了这篇文章的入门实践!
注: 本文首发于 My 公众号 CodeSheep ,可 长按 或 扫描 下面的 小心心 来订阅 ↓ ↓ ↓
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接口,能向浏览器返回一个 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!”; } }
我们在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”]
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服务,外加各种基础设施、数据库、通信、中间件以及调度来构成,每个子元素的开发也依然遵循这里的基本流程。
作者更多的原创文章在此,欢迎观赏
My Personal Blog
作者更多的SpringBt实践文章在此:
Spring Boot应用监控实战
SpringBoot应用部署于外置Tomcat容器
ElasticSearch搜索引擎在SpringBt中的实践
初探Kotlin+SpringBoot联合编程
Spring Boot日志框架实践
SpringBoot优雅编码之:Lombok加持
如果有兴趣,也可以抽点时间看看作者一些关于容器化、微服务化方面的文章:
利用K8S技术栈打造个人私有云 连载文章
从一份配置清单详解Nginx服务器配置
Docker容器可视化监控中心搭建
利用ELK搭建Docker容器化应用日志中心
RPC框架实践之:Apache Thrift
RPC框架实践之:Google gRPC
微服务调用链追踪中心搭建
Docker容器跨主机通信
Docker Swarm集群初探
高效编写Dockerfile的几条准则
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/27260.html
摘要:在年下旬开源了一款新的工具,可以轻松地将应用程序容器化。由于默认访问谷歌的仓库,而国内访问不稳定会经常导致网络超时,所以笔者使用了国内的阿里云镜像服务,那么就不需要访问谷歌的仓库了。执行完成后,我们可以在阿里云镜像仓库获取镜像。 原文地址:梁桂钊的博客博客地址:http://blog.720ui.com 欢迎关注公众号:「服务端思维」。一群同频者,一起成长,一起精进,打破认知的局限性。...
摘要:在年下旬开源了一款新的工具,可以轻松地将应用程序容器化。由于默认访问谷歌的仓库,而国内访问不稳定会经常导致网络超时,所以笔者使用了国内的阿里云镜像服务,那么就不需要访问谷歌的仓库了。执行完成后,我们可以在阿里云镜像仓库获取镜像。 原文地址:梁桂钊的博客博客地址:http://blog.720ui.com 欢迎关注公众号:「服务端思维」。一群同频者,一起成长,一起精进,打破认知的局限性。...
摘要:概述应用一旦容器化以后,需要考虑的就是如何采集位于容器中的应用程序的打印日志供运维分析。 showImg(https://segmentfault.com/img/remote/1460000014146680); 概述 应用一旦容器化以后,需要考虑的就是如何采集位于Docker容器中的应用程序的打印日志供运维分析。典型的比如 SpringBoot应用的日志 收集。本文即将阐述如何利...
摘要:概述进行的开发过程中,我们很多时候经常需要重启服务器才能保证修改的源代码文件或者一些诸如的配置文件以及一些静态文件生效,这样耗时又低效。 showImg(https://segmentfault.com/img/remote/1460000015363888); 概述 进行SpringBoot的Web开发过程中,我们很多时候经常需要重启Web服务器才能保证修改的 源代码文件、或者一些...
阅读 3295·2021-11-12 10:36
阅读 2444·2021-11-02 14:43
阅读 2126·2019-08-30 14:23
阅读 3444·2019-08-30 13:08
阅读 906·2019-08-28 18:09
阅读 3109·2019-08-26 12:22
阅读 3081·2019-08-23 18:24
阅读 1992·2019-08-23 18:17