docker compose 官方介绍:Overview | Docker Documentation
1. 什么是docker compose
docker compose通常用来定义和运行多容器,可以配置docker的配置,网络,服务,数据卷等。docker compose通过定义一个yml文件来指定docker容器的各种配置。
docker compose的使用分为以下三步:
1. 定义各个容器的dockerfile文件
2. 编写docker-compose.yml文件,定义服务等
3. 通过命令:docker compose up命令来启动docker-compose.yml中配置的容器
2. 安装docker compose
1. Windows或Macos 若安装了Docker Desktop工具,则已经安装了docker compse命令
2. Linux上通过pip3安装
# 安装pip3依赖
sudo apt install python3-pip
# 通过pip3安装docker-compose
sudo pip3 install docker-compose
# 查看安装的版本
docker-compose --version
控制台如果如下图正常输出docker-compose的版本则表示安装成功
3. 编写一个docker compose文件
以专栏中的dockerfile为例,使用docker-compose来制作自定义镜像my-app,并拉去所需的redis镜像,同时启动redis和my-app
目录结构:
docker-compose.yml内容如下:
# 指定语法版本
version: "3.8"
# 同一个services中的服务会被docker放在同一个网络中管理
services:
# 获取redis镜像
redis:
image: redis:latest
container_name: my-redis
volumes:
- ./redis-data:/data
# 打包运行自定义的镜像
my-app:
container_name: my-app-test
build: .
ports:
- "8080:8080"
depends_on:
- redis
使用命令:docker compose up -d,开始制作和启动镜像,出现以下输出则表示镜像制作成功,随后会启动这两个镜像。
通过docker ps可以查询到,这两个镜像已经正常运行 ,这样我们就可以简单的部署和启动大量的docker容器,达到分布式部署的效果。
同时由于redis和my-app被docker管理,代码中的redis配置地址可以用docker中的服务名代替。
# 原先的redis地址配置
spring.redis.host=127.0.0.1:6379
#替换为
spring.redis.host=redis:6379
通过以上示例,可以看出docker compose可以方便的制作、配置大量的镜像,同时可以降低代码中的耦合性,服务的ip地址由docker去管理,是代码更加的简洁~