Docker Compose 可以基于 Compose 文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器。

初识 Docker Compose

Compose 文件是一个文本文件,通过指令定义集群中的每个容器如何运行。格式如下:

  1. version: "3.8"
  2. services:
  3. mysql:
  4. image: mysql:5.7.25
  5. environment:
  6. MYSQL_ROOT_PASSWORD: 123
  7. volumes:
  8. - "/tmp/mysql/data:/var/lib/mysql"
  9. - "/tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf"
  10. web:
  11. build: .
  12. ports:
  13. - "8090:8090"

上面的 Compose 文件就描述一个项目,其中包含两个容器:

  • mysql:一个基于 mysql:5.7.25 镜像构建的容器,并且挂载了两个目录
  • web:一个基于 docker build 临时构建的镜像容器,映射端口时 8090

Docker Compose 的详细语法参考官网:https://docs.docker.com/compose/compose-file/

其实 Docker Compose 文件可以看做是将多个 docker run 命令写到一个文件,只是语法稍有差异。

安装 Docker Compose

  1. 下载 docker-compose,Linux 下需要通过命令下载(速度较慢):

    1. curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
  2. 修改文件权限

    1. chmod +x /usr/local/bin/docker-compose

    配置 Base 自动补全命令

    1. curl -L https://raw.githubusercontent.com/docker/compose/1.29.1/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose

    如果这里出现错误,需要修改自己的 hosts 文件:

    1. echo "199.232.68.133 raw.githubusercontent.com" >> /etc/hosts

    部署微服务集群

    需求:将之前学习的 spring-cloud-demo 微服务集群利用 Docker Compose 部署

实现思路:

  1. 编写 docker-compose 文件
  2. 修改自己的 cloud-demo 项目,将数据库、nacos 地址都命名为 docker-compose 中的服务名
  3. 使用 maven 打包工具,将项目中的每个微服务都打包为 app.jar
  4. 将打包好的 app.jar 拷贝到 cloud-demo 中的每一个对应的子目录中
  5. 到 cloud-demo 目录,利用 docker-compose up -d 来部署