使用Docker Compose编排微服务
一般微服务架构会包含若干个微服务,而每个微服务可以有多个实例,如果每个微服务都有手动启停,那么效率就很低、维护量比较大。
所以我们可以使用Docker Compose来轻松、高效地管理容器。
一、安装Docker Compose
网上安装方法有很多,附上centos7的链接地址。
二、使用Spring Cloud构建微服务
当然,你也可以使用doubbo框架来构建。项目结构如下图,discovery是服务注册中心,provider是服务生产者,consumer是服务消费者。
  
本地先启动discovery服务再启动其他两个服务,游览器输入http://localhost:8082/user/test,游览器即可显示用户信息。代码分享到了github,点击这里下载。
三、使用Dockerfile构建镜像文件
虽然使用maven插件来构建Docker镜像更简单一些,但是我是在windows环境下开发的,而docker环境在虚拟机里,所以放弃了。
1.获取服务的jar包
修改每个项目的application.yml配置文件,将eureka.client.service-url.defaultZone这个的域名localhost改为discovery,
因为默认情况下Compose以服务名称作为hostname被其他容器访问,否则其他两个服务无法注册到discovery。
在项目所在目录打开cmd,执行命令mvn clean package 即可获得对应jar包(操作三次),分别是consumer-0.0.1-SNAPSHOT.jar,discovery-0.0.1-SNAPSHOT.jar,provider-0.0.1-SNAPSHOT.jar,
然后上传到l服务器/usr/local/docker目录。
2.构建镜像
cd /usr/local/docker 进入工作目录
vi Dockerfile,内容如图
  
docker build -t provider:0.0.1 . 完成构建
然后再修改jar包名称 和 端口号,依次构建consumer和discovery。
输入命令docker images -a ,即可查看刚刚构建的镜像。
四、编写docker-compose.yml文件
vi docker-compose.yml
  
这里需要注意几点:1.ports这个是必须要加的,不然的话容器启动后在宿主机可以访问,但是外网不能访问。百度docker-compose.yml常用命令了解更多。
2.还有一个就是容器间网络访问的问题,使用networks命令自定义网络来使它们处于同一个网络环境。
最后,输入docker-compose up 启动,启动完毕后,在游览器输入http://192.168.75.132:8080/即可看到注册中心(192.168.75.132是我虚拟机的ip):

访问http://192.168.75.132:8082/user/test,即可看到结果(有时候报错,链接超时多试几次)。

至此,大功告成!
使用Docker Compose编排微服务的更多相关文章
- 使用Docker compose编排Laravel应用
		
前言 Laravel官方开发环境推荐的是Homestead(其实就是一个封装好的Vagrant box),我感觉这个比较重,于是自己用Docker compose编排了一套开发环境,在这里分享下. 环 ...
 - Docker从入门到掉坑(二):基于Docker构建SpringBoot微服务
		
本篇为Docker从入门到掉坑第二篇:基于Docker构建SpringBoot微服务,没有看过上一篇的最好读过 Docker 从入门到掉坑 之后,阅读本篇. 在之前的文章里面介绍了如何基于docker ...
 - 使用Docker Compose编排Spring Cloud微服务
		
文章目录 微服务构建实例 简化Compose的编写 编排高可用的Eureka Server 编排高可用Spring Cloud微服务集群及动态伸缩 微服务项目名称 项目微服务中的角色 microser ...
 - SpringCloud微服务实战——搭建企业级开发框架(三十五):SpringCloud + Docker + k8s实现微服务集群打包部署-集群环境部署
		
一.集群环境规划配置 生产环境不要使用一主多从,要使用多主多从.这里使用三台主机进行测试一台Master(172.16.20.111),两台Node(172.16.20.112和172.16.20.1 ...
 - Docker(二十六)-Docker Compose编排容器
		
1. 前言 Docker Compose 是 Docker 容器进行编排的工具,定义和运行多容器的应用,可以一条命令启动多个容器. 使用Compose 基本上分为三步: Dockerfile 定义应用 ...
 - Docker系列之(五):使用Docker Compose编排容器
		
1. 前言 Docker Compose 是 Docker 容器进行编排的工具,定义和运行多容器的应用,可以一条命令启动多个容器. 使用Compose 基本上分为三步: Dockerfile 定义应用 ...
 - Docker+Kubernetes(k8s)微服务容器化实践
		
第1章 初识微服务微服务的入门,我们从传统的单体架构入手,看看在什么样的环境和需求下一步步走到微服务的,然后再具体了解一下什么才是微服务,让大家对微服务的概念有深入的理解.然后我们一起画一个微服务的架 ...
 - docker compose 编排
		
Compose是Docker的服务编排工具,主要用来构建基于Docker的复杂应用,Compose 通过一个配置文件来管理多个Docker容器,非常适合组合使用多个容器进行开发的场景. 说明:Comp ...
 - Docker Compose 部署Nginx服务实现负载均衡
		
Compose简介: Compose是Docker容器进行编排的工具,定义和运行多容器的应用,可以一条命令启动多个容器,使用Docker Compose,不再需要使用shell脚本来启动容器.Comp ...
 
随机推荐
- UVA 12035 War Map
			
让我先把微笑送给出题人 这个题最基础的一个想法:先找出一个度数和为总度数和的1/2的点集,然后判断这个点集和这个点集的补集能否形成二分图.但是就算我们把判断的复杂度看成O(1),这个算法的复杂度也是 ...
 - 【APUE】进程间通信之管道
			
管道是UNIX系统IPC最古老形式,并且所有UNIX系统都提供此种通信机制.管道由下面两种局限性: 1)历史上,它们是半双工的(即数据只能在一个方向上流动) 2)它们只能在具有公共祖先的进程之间使用. ...
 - Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的使用方法总结
			
具体解读Jquery各Ajax函数: $.get(),$.post(),$.ajax(),$.getJSON() 一 $.get(url,[data],[callback]) 说明:url为请求地 ...
 - C# Json反序列化 数据协定类型 无法反序列化  由于未找到必需的数据成员
			
背景今天在使用:C# Json 序列化与反序列化 反序列化的时候出现了以下的错误信息. System.Runtime.Serialization.SerializationException: 数据协 ...
 - iOS iOS8中 问题"registerForRemoteNotificationTypes: is not supported in iOS 8.0 and later" 解决方式
			
问题重述: iOS 8中改变了通知注冊的方式,假设App须要同一时候支持iOS 7 和 8 的话,须要首先检查selector. 解决方式:在Xcode 6中 - (BOOL)application: ...
 - POI 的使用
			
POI 使用 一. POI简介 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能..NET的开发人员则 ...
 - 嵌入式开发之davinci--- 8148 中dsp在dsp_drv.c中的processdata()加算法出现下边缘条纹问题
			
(1)问题原因 dsp在alglink_priv.c中做灰度处理发现,下面出现条纹,后面发现是cache 缓存没及时写进内存问题 (2)解决办法 for(frameId=0; frameId<f ...
 - asp.net编码解码的两篇文章
			
http://www.cnblogs.com/freshman0216/p/4165949.html http://www.cnblogs.com/freshman0216/p/4172655.htm ...
 - 提高比特率 有损 无损  Video-and-Audio-file-format-conversion  视频声音转码
			
3 Ways to Change Bitrate on MP3 Files https://www.online-tech-tips.com/software-reviews/change-bitra ...
 - h5ai目录列表优化
			
h5ai是HTTP Web服务器的现代文件索引器,专注于您的文件.目录以有吸引力的方式显示,浏览它们通过不同的视图,面包屑和树状概述增强.最初,h5ai是HTML5 Apache Index的缩写,但 ...