上篇 使用Maven构建微服务的Docker镜像 写了如何构建微服务的镜像及运行镜像。但往往我们整个微服务架构中会有几十个甚至几百个微服务,我们不可能都使用手动去启停,那样效率很低,维护量也很大。
因此我们需要一个自动化的工具帮助我们管理容器。本篇使用的是docker-compose
。
安装
Compose
支持 Linux、macOS、Windows 10 三大平台.
Compose
可以通过 Python 的包管理工具pip
进行安装,也可以直接下载编译好的二进制文件使用,甚至能够直接在 Docker 容器中运行。
我是Centos 7因此我使用的是二进制包的形式安装。使用如下命令进行安装:
1 | $ sudo curl -L https://github.com/docker/compose/releases/download/1.17.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose |
安装完成后检查docker-compose
版本OK就好了
1 | [root@HJWDEV ~]# docker-compose -v |
编排微服务
使用docker-compose
编排微服务大致步骤如下:
1、编写各服务的Dockerfile
2、编写docker-compose.yml
定义组成应用程序的服务及各服务的依赖,网络配置等
3、运行docker-compose up
命令,启动并运行整个项目
本例项目源码使用之前做过的项目,把Eureka,provider-user,consumer-movie进行编排。源码查看:microservice-discovery-eureka、microservice-simple-provider-user、microservice-simple-consumer-movie
目录结构如下:
1 | ├─.idea |
Dockerfile
这三个微服务的Dockerfile文件如何编写可以参考前面的博客:使用Maven构建微服务的Docker镜像 这里不再赘述。
docker-compose.yml
docker-compose.yml 文件的编写是关键。
1 | version: '2' # docker-compose 版本 |
以上是使用最简单的方式进行配置。
build
: 使用 build
并指定Dockerfile
,docker-compose 会根据Dockerfile
构建镜像。这里使用了args
传入了Dockerfile
构建镜像时需要的参数,前面通过 maven 构建镜像时,这个参数是从pom
文件中传入的。这里的构建不通过 maven ,因此需要单独在docker-compose.yml
中传入args
,否则会由于缺少参数而构建镜像失败。
depends_on
: 表示这个服务依赖于某个服务,如microservice-simple-consumer-movie 是依赖 microservice-simple-provider-user 的,provider 启动了,consumer 才能访问到数据。因此如果配置了依赖的服务,docker-compose
会先启动被依赖的服务。
启动
上面的步骤做完之后,就可以启动Docker-compse了。只需要简单的一条命令:
1 | docker-compose up |
docker-compose 会根据docker-compose.yml
配置的内容进行镜像的构建并启动。
docker-compose 配置
Docker-compose 的具体用法 及 yml 文件的具体配置可以参考 : https://docker_practice.gitee.io/compose/compose_file.html