DockerCompose
服务编排
微服务架构的应用系统中一般包含若干个微服务,每个微服务一般都会部署多个实例,如果每个微服务都要手动启动停止,维护的工作量会很大。来看下我们日常工作:
1、要从 Dockerfile build image 或者去 dockerhub 拉取 image
2、要创建多个 container
3、要管理这些container(启动停止删除)
通过服务编排可以大量简化上面的工作服务编排:按照一定的业务规则批量管理容器
概念
DockerCompose 是一个编排多容器分布式部署的工具,提供命令集中管理容器化应用的完整开发周期,包括服务 构建,启动和停止。
使用步骤:
- 利用 Dockerfile 定义运行环境镜像
- 使用 docker-compose.yml 定义组成应用的各服务
- 运行 docker-compose up 启动应用
安装
Docker Compose 目前已经完全支持 Linux、MacOS 和 Windows,在安装 Compose 之前,需要先安装 Docker。
下面是以编译好的二进制包方式安装在 Linux 系统中。
安装 Compose:
curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-
`uname -m` -o /usr/local/bin/docker-compose
设置文件可执行权限:
chmod +x /usr/local/bin/docker-compose
查看版本信息:
docker-compose -version
卸载
二进制包方式安装的,删除二进制文件即可
rm /usr/local/bin/docker-compose
案例
编排 nginx+springboot
需求:使用 nginx 反向代理到 springboo 应用
实现步骤:
第 1 步:在 root 目录下创建 docker-compose 目录,用于存放编排数据
mkdir docker-compose #创建目录
ls #查看目录下文件
cd docker-compose/ #进入目录
ll #查看目录下文件详情
第 2 步:在 docker-compose 目录下创建并编写 docker-compose.yml 文件
创建文件命令:vim docker-compose.yml
文件内容:
version: '3' #版本随便写
services: #需要编排的服务:即nginx和app
nginx:
image: nginx #nginx服务来自于nginx镜像
ports:
- 80:80 #用宿主机的80端口来映射nginx容器的80端口
links: #用links将当前容器链接其他容器
- app #链接的容器,链接之后可以用app别名访问下面的app容器
volumes: #数据卷的配置
#将数据卷目录(./nginx/conf.d)挂载到nginx目录(/etc/nginx/conf.d)下
- ./nginx/conf.d:/etc/nginx/conf.d
app:
image: app #app服务来自于app镜像
expose:
- "8080" #将app服务的8080端口暴露,以便nginx服务访问
注意:docker 中一定要有编排的对象,即 nginx 镜像和 app 镜像
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yX2LhuiO-1645709259767)(images/docker-compose05.png)]
第 3 步:配置 nginx 服务的反应代理
创建 ./nginx/conf.d 目录
mkdir -p ./nginx/conf.d #-p表示递归创建子目录
第 4 步:在 ./nginx/conf.d 目录下创建并编写 app.conf 文件
创建 app.conf
命令:vim app.conf
server {
listen 80; #nginx标准配置,监听80端口。当访问80端口时,会直接跳转到 http://app:8080/hello 页面
access_log off;
location / {
proxy_pass http://app:8080/hello;
}
}
第 5 步:在 docker-compose 目录下使用命令启动容器
docker-compose up -d #-d:加入表示进入守护模式,不加入表示进入命令行模式,默认不加
再次查询容器运行状态
打开浏览器访问 http://192.168.130.131:80 会跳转至 app 的 8080/hello 页面中。
第 6 步:停止 dockerCompose
命令:
docker-compose down #停止命令
docker ps #查看运行的容器