Docker Compose 可以基于 Compose 文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器。
初识 Docker Compose
Compose 文件是一个文本文件,通过指令定义集群中的每个容器如何运行。格式如下:
version: "3.8"services:mysql:image: mysql:5.7.25environment:MYSQL_ROOT_PASSWORD: 123volumes:- "/tmp/mysql/data:/var/lib/mysql"- "/tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf"web:build: .ports:- "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
下载 docker-compose,Linux 下需要通过命令下载(速度较慢):
curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
修改文件权限
chmod +x /usr/local/bin/docker-compose
配置 Base 自动补全命令
curl -L https://raw.githubusercontent.com/docker/compose/1.29.1/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose
如果这里出现错误,需要修改自己的 hosts 文件:
echo "199.232.68.133 raw.githubusercontent.com" >> /etc/hosts
部署微服务集群
需求:将之前学习的 spring-cloud-demo 微服务集群利用 Docker Compose 部署
实现思路:
- 编写 docker-compose 文件
- 修改自己的 cloud-demo 项目,将数据库、nacos 地址都命名为 docker-compose 中的服务名
- 使用 maven 打包工具,将项目中的每个微服务都打包为 app.jar
- 将打包好的 app.jar 拷贝到 cloud-demo 中的每一个对应的子目录中
- 到 cloud-demo 目录,利用
docker-compose up -d来部署
