微服务SpringCloud容器化案例
前言
当我们在使用微服务的时候,那么有一个问题一定会困扰我们,那就是项目的测试和部署。因为在单体应用下,部署项目很简单,直接打包启动就可以了,而对于微服务来说,因为有各个组件的存在所以让测试和部署都变得很麻烦,而容器化是微服务的部署一把利剑。
PS:本文不介绍具体docker使用的各种基础,以及微服务的各种基础,就是给出相应的案例,你可以根据这样的案例快速学会如何将你的微服务容器化。
实际案例
让我们先来看看,实现之后如果本地要进行测试,是多么方便。

只需要一个命令,就能将我们的服务都启动起来,包括注册中心,网关,服务都启动了,你不需要三四台服务器,也不需要安装配置各种复杂的环境。
当我们要停止所有服务的时候呢?

实际案例:https://github.com/LinkinStars/MicroServiceExample/tree/dockerization
微服务容器化的步骤
- 编写Dockerfile构建单个镜像
- 编写docker-compose.yml进行容器编排
- 修改各个应用中的application.yml的一些访问地址
容器化相关命令
单独部署:
进入某个应用的目录(目录下有Dockerfile)
使用命令:docker build -t mic-eureka .
整体编排部署:
进入根目录(目录下有docker-compose.yml)
使用命令:docker-compose up -d
容器化说明
在所有module每个目录下面都存在一个Dockerfile,类似如下:
# 基础镜像
FROM java:openjdk-8u111 # 作者
MAINTAINER LinkinStar linkinstar@foxmail.com # 将build/libs下的jar包拷贝到容器中的根目录,并命名为app.jar
COPY build/libs/*.jar /app.jar # 声明开放端口
EXPOSE 8761 # 启动应用
ENTRYPOINT ["java", "-jar", "app.jar"]
容器编排:
在根目录下有docker-compose.yml文件,用于进行容器编排:
# 声明版本
version: '3' # 声明各个服务services
services:
# 服务名称
mic-eureka:
# 构建当前服务的Dockerfile位置
build:
context: eureka
# 镜像名称
image: mic-eureka:latest
# 映射的开放端口
ports:
- 8761:8761 mic-gateway:
build:
context: gateway
image: mic-gateway:latest
# 需要关联的应用,这些关联的应用可以通过下面的名称来访问,类似域名的概念
links:
- mic-eureka
- mic-pay
- mic-order
ports:
- 8769:8769 mic-pay:
build:
context: pay
image: mic-pay:latest mic-order:
build:
context: order
image: mic-order:latest
总结
对于jar包,我们还是需要手动用gradle的bootJar进行打包,其实可以编写相应的shell脚本来完成,这样更加的自动方便一些。 针对实际项目中,还有数据库,redis,mq这些都可以交由容器去进行部署和编排,这里只是抛砖引玉,对于这些的部署和实现就交给你来完成啦。
微服务SpringCloud容器化案例的更多相关文章
- 微服务与容器化Docker
1.Docker的应用案例 2. 3. 4.docker的核心:镜像.仓库.容器 Build构建镜像:类似于集装箱. Ship运输镜像,仓库:类似于码头.将镜像运输到仓库. Run运行镜像:容器:类似 ...
- 微服务SpringCloud+Docker入门到高级实战(教程详情)
第一章 课程介绍和学习路线 1.微服务架构SpringCloud课程介绍 简介:课程介绍和课程大纲讲解,讲课风格和重点内容理解技巧 2.技术选型和学后水平 简介:课程所需基础和技术选型讲解,学完课程可 ...
- DDD/CQRS模式,微服务,容器
DDD/CQRS模式,微服务,容器 https://docs.microsoft.com/zh-cn/previous-versions/msp-n-p/ee658109(v=pandp.10) We ...
- 小D课堂 - 新版本微服务springcloud+Docker教程_1_01课程简介
笔记 ============================================= SpringCloud课程笔记.txt 第一章 课程介绍和学习路线 1.微服务架构SpringClou ...
- WeText项目:一个基于.NET实现的DDD、CQRS与微服务架构的演示案例
最近出于工作需要,了解了一下微服务架构(Microservice Architecture,MSA).我经过两周业余时间的努力,凭着自己对微服务架构的理解,从无到有,基于.NET打造了一个演示微服务架 ...
- .netcore下的微服务、容器、运维、自动化发布
原文:.netcore下的微服务.容器.运维.自动化发布 微服务 1.1 基本概念 1.1.1 什么是微服务? 微服务架构是SOA思想某一种具体实现.是一种将单应用程序作为一套小型 ...
- 「 从0到1学习微服务SpringCloud 」01 一起来学呀!
有想学微服务的小伙伴没?一起来从0开始学习微服务SpringCloud,我会把学习成果总结下来,供大家参考学习,有兴趣可以一起来学!如有错误,望指正! Spring .SpringBoot.Sprin ...
- SpringCloud与微服务Ⅹ --- SpringCloud Config分布式配置中心
一.SpringCloud Config是什么 分布式系统面临的问题 --- 配置问题 微服务意味着要将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现大量的服务.由于每个 ...
- 10分钟了解微服务、容器和Kubernetes
什么是微服务? 什么是微服务?你应该使用微服务吗?微服务与容器和 Kubernetes 有什么关系?如果这些问题在您的日常生活中不断出现,那么这篇文章适合您. 从根本上说,微服务只是一个运行在服务器或 ...
随机推荐
- window.open在ajax里 被浏览器拦截
setLine(row){ let newTab= window.open('about:blank'); this.api.isPrivilege(localStorage.getItem(&quo ...
- Java 什么是线程安全
当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何交替执行,并且在主调代码中不需要额外的同步或协同,这个类都能表现出正确的行为,那么这个类就是线程安全的.其中,正确性指某个类的行 ...
- NOIP-接水问题
题目描述 学校里有一个水房,水房里一共装有m个龙头可供同学们打开水,每个龙头每秒钟的供水量相等,均为1. 现在有n名同学准备接水,他们的初始接水顺序已经确定.将这些同学按接水顺序从1到n编号,i号同学 ...
- 替换url中的域名
/** * * @param domain 域名 * @param port 端口号 * @param url url路径 * @return ...
- electron 打包后node_modules 体积过于庞大
问题产生原因:过多无用的模块被打包放入到程序中 解决: 删除 package-lock.json ,是由于这个文件导致打包时候放入过多文件,删除即可.
- Python基础之迭代器、生成器
一.迭代器: 1.迭代:每一次对过程的重复称为一次“迭代”,而每一次迭代得到的结果会作为下一次迭代的初始值.例如:循环获取容器中的元素. 2.可迭代对象(iterable): 1)定义:具有__ite ...
- Python基础之面向对象思维解决游戏《天龙八部》
一.程序设计思维: 以面向对象的思维设计<天龙八部>游戏技能,使得技能效果在增加或者减少时,游戏技能整体框架不改变,仅仅增加或者减少技能效果 二.思路流程图如下: 三.变成框架实现代码: ...
- [tkinter]为列表框添加滚动条
为了给列表框配备滚动条,看来很多别人的博客 终于解决了问题 ,现在我总结一下 from tkinter import * root = Tk() lb = Listbox(root) scr = Sc ...
- 已知一个字符串S 以及长度为n的字符数组a,编写一个函数,统计a中每个字符在字符串中的出现次数
import java.util.Scanner; /** * @author:(LiberHome) * @date:Created in 2019/3/6 21:04 * @description ...
- 电子科技大学第九届ACM趣味程序设计竞赛(热身赛)题解
比赛地址:http://acm.uestc.edu.cn/#/contest/show/191 A题 小羽涂色 题意: 在x轴的正半轴上,问你是否存在一段区间[L,R]其中包含r个奇数和g个偶数. 分 ...