我们都知道使用Dockerfile可以将我们的springboot的应用构造成一个镜像,然后我们通过docker run 或者docker serice create就可以将镜像运行成为一个独立的容器,但是你没有想过一个微服务的应用可是由好多个springboot应用组成的呢,你难道要一个一个run吗一个合格的工程师当然不会让这种重复机械的事情发生第二次,对于这种重复机械的工作我们写一个shell脚本不就好啦把多次run的命令全都放在一个脚本里每次更新我们运行这个脚本就好啦.这么致命的缺陷难道docker就没有发现吗,怎么可能,人家不仅发现啦~还给我们提供了更好用的脚本,那就是接下来要说的docker compose
Compose
项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。从功能上看,跟 OpenStack
中的 Heat
十分类似。
其代码目前在 https://github.com/docker/compose 上开源。
Compose
定位是 「定义和运行多个 Docker 容器的应用(Defining and running multi-container Docker applications)」,其前身是开源项目 Fig。
我们知道使用一个 Dockerfile
模板文件,可以让用户很方便的定义一个单独的应用容器。然而,在日常工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个 Web 项目,除了 Web 服务容器本身,往往还需要再加上后端的数据库服务容器,甚至还包括负载均衡容器等。
Compose
恰好满足了这样的需求。它允许用户通过一个单独的 docker-compose.yml
模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。
Compose
中有两个重要的概念:
service
):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。project
):由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml
文件中定义。Compose
的默认管理对象是项目,通过子命令对项目中的一组容器进行便捷地生命周期管理。
Compose
项目由 Python 编写,实现上调用了 Docker 服务提供的 API 来对容器进行管理。因此,只要所操作的平台支持 Docker API,就可以在其上利用 Compose
来进行编排管理。
docker在linux上安装那是相当的easy呀
sudo curl -L https://github.com/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
篇幅有限,我就不介绍命令的含义以及和run指令的对应关系了,不过无需担心,因为他们很简单~至于和run命令的对应关系你可能一眼就看出来啦,上一篇我们使用docker构建了一个基于SpringCloudAlibaba的消费者和一个生产者,今天我们就使用docker compose编排了他们~
version: "3.0"
services:
cloud-consumer:
image: cloud-consumer:v0.1
container_name: cloud-consumer
ports:
- "83:83"
volumes:
- /docker_volumes/cloud-consumer:/var/log
environment:
active: test
networks:
- alibaba-overlay
depends_on:
- cloud-provider9001
- cloud-provider9002
cloud-provider9001:
image: cloud-provider9001:v0.1
container_name: cloud-provider9001
ports:
- "9001:9001"
volumes:
- /docker_volumes/cloud-provider9001:/var/log
environment:
active: test
networks:
- alibaba-overlay
cloud-provider9002:
image: cloud-provider9001:v0.1
container_name: cloud-provider9002
ports:
- "9002:9001"
volumes:
- /docker_volumes/cloud-provider9002:/var/log
environment:
active: test
networks:
- alibaba-overlay
networks:
alibaba-overlay:
启动也是非常简单啦,直接在docker-ompose.yml文件所在的文件夹执行docker-compose up就可以啦
这是使用docker-compose up是为了方便调试,在生产环境我们使用docker-compose up -d 就可以后台启动啦~