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

docker compose volume参数详解 docker的compose_80端口

卸载

二进制包方式安装的,删除二进制文件即可

rm /usr/local/bin/docker-compose
案例

编排 nginx+springboot

需求:使用 nginx 反向代理到 springboo 应用

实现步骤

第 1 步:在 root 目录下创建 docker-compose 目录,用于存放编排数据

mkdir docker-compose  #创建目录
ls					  #查看目录下文件
cd docker-compose/	  #进入目录
ll 					  #查看目录下文件详情

docker compose volume参数详解 docker的compose_nginx_02

第 2 步:在 docker-compose 目录下创建并编写 docker-compose.yml 文件

创建文件命令:vim docker-compose.yml

docker compose volume参数详解 docker的compose_nginx_03

文件内容:

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 compose volume参数详解 docker的compose_80端口_04

注意:docker 中一定要有编排的对象,即 nginx 镜像和 app 镜像

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yX2LhuiO-1645709259767)(images/docker-compose05.png)]

第 3 步:配置 nginx 服务的反应代理

创建 ./nginx/conf.d 目录

mkdir -p ./nginx/conf.d    #-p表示递归创建子目录

docker compose volume参数详解 docker的compose_80端口_05

第 4 步:在 ./nginx/conf.d 目录下创建并编写 app.conf 文件

创建 app.conf

命令:vim app.conf

docker compose volume参数详解 docker的compose_docker_06

server {
	listen 80;     #nginx标准配置,监听80端口。当访问80端口时,会直接跳转到 http://app:8080/hello 页面
	access_log off;
	location / {
		proxy_pass http://app:8080/hello;
	}
}

docker compose volume参数详解 docker的compose_80端口_07

第 5 步:在 docker-compose 目录下使用命令启动容器

docker-compose up -d   #-d:加入表示进入守护模式,不加入表示进入命令行模式,默认不加

docker compose volume参数详解 docker的compose_nginx_08

再次查询容器运行状态

docker compose volume参数详解 docker的compose_docker_09

打开浏览器访问 http://192.168.130.131:80 会跳转至 app 的 8080/hello 页面中。

docker compose volume参数详解 docker的compose_nginx_10

第 6 步:停止 dockerCompose

命令:
docker-compose down  #停止命令
docker ps 			 #查看运行的容器

docker compose volume参数详解 docker的compose_80端口_11