使用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,即可看到结果(有时候报错,链接超时多试几次)。

至此,大功告成!

posted @ 2018-04-06 20:10  烟味i  阅读(1537)  评论(0编辑  收藏  举报