16boke - 一路博客

Docker系列:9、使用Docker Compose编排微服务

1、什么是compose

Docker Compose是一个用来定义和运行复杂应用的Docker工具。一个使用Docker容器的应用,通常由多个容器组成。使用Docker Compose不再需要使用shell脚本来启动容器。 

Compose 通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器,非常适合组合使用多个容器进行开发的场景。

2、安装Docker compose

通过以下命令自动下载并安装适应系统版本的Compose:

curl -L https://github.com/docker/compose/releases/download/1.20.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose

使用以下命令测试安装结果:docker-compose --version

[root@centos7 cloud]# docker-compose --version

docker-compose version 1.20.0, build ca8d3c6

3、编写docker-compose.yml文件

提前已经生成四个微服务的镜像:

cloud-eureka:服务注册中心,需要与cloud-eureka建立连接;

cloud-provider:服务提供者,需要与cloud-eureka建立连接,但是不指定绑定的端口,因为服务提供者会动态扩容和缩容的,会使用docker-compose scale cloud-provider=3增加到3个服务。所以不能固定端口

cloud-provider-1:另一个服务提供者,与上一个服务提供者组成服务集群,需要与cloud-eureka建立连接;

cloud-client:服务调用者,需要与cloud-eureka建立连接

详细的yml文件如下:

version: "3"

services:

   #eureka

   cloud-eureka:

       image: cloud-server:0.0.1-SNAPSHOT

       restart: always

       ports:

           - 8000:8000

   

   #provider

   cloud-provider:

       image: cloud-provider:0.0.1-SNAPSHOT

       depends_on:

           - cloud-eureka

   

   #provider1

   cloud-provider-1:

       image: cloud-provider-1:0.0.1-SNAPSHOT

       ports:

           - 9002:9002

       depends_on:

           - cloud-eureka

   

   #client

   cloud-client:

       image: cloud-client:0.0.1-SNAPSHOT

       ports:

           - 9001:9001

       depends_on:

           - cloud-eureka

   

4、运行docker-compose

执行:docker-compose up -d

-d说明在后台运行

运行后系统会输出生成的容器并且处于:done状态,查看容器如下:说明成功启动所有容器

1.png

5、注意的地方

如果镜像有修改,直接build上传之后,再次执行docker-compose up -d之后会判断对于没有改动的镜像,则不会重新生成容器,只会重新生成修改的镜像的容器。


Docker