目录
[一.Docker Compose简介](#一.Docker Compose简介)
[三.YAML 文件格式及编写注意事项](#三.YAML 文件格式及编写注意事项)
[1.YAML 基本语法](#1.YAML 基本语法)
[2.Docker Compose配置常用字段](#2.Docker Compose配置常用字段)
[3.Docker Compose 常用命令](#3.Docker Compose 常用命令)
[4.Docker Compose 文件结构](#4.Docker Compose 文件结构)
[5.YAML 示例](#5.YAML 示例)
[五.编写 docker-compose.yml](#五.编写 docker-compose.yml)
前言:
今天我将分享通过 Docker Compose,在一个 YAML 配置文件中定义多个服务,并实现容器之间的联动的方法。
一.Docker Compose简介
Docker-Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。
Docker-Compose 将所管理的容器分为三层,分别是工程( project ),服务( service )以及容器
( container )。 Docker-Compose 运行目录下的所有文件( docker-compose.yml , extends 文件或环境变量文件等)组成一个工程,若无特殊指定工程名即为当前目录名。一个工程当中可包含多个服务,每个服务中定义了容器运行的镜像、参数、依赖。一个服务当中可包括多个容器实例,Docker-Compose并没有解决负载均衡的问题,因此需要借助其它工具实现服务发现及负载均衡,比如Consul。
Docker-Compose 的工程配置文件默认为 docker-compose.yml ,可通过环境变量 COMPOSE_FILE 或 -f 参数自定义配置文件,其定义了多个有依赖关系的服务及每个服务运行的容器。
使用一个 Dockerfile 模板文件,可以让用户很方便的定义一个单独的应用容器。在工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个Web 项目,除了 Web 服务容器本身,往往还需要再加上后端的数据库服务容器,甚至还包括负载均衡容器等。
Compose允许用户通过一个单独的 docker-compose.yml 模板文件( YAML 格式)来定义一组相关联的应用容器为一个项目(project )。
Docker-Compose 项目由 Python 编写,调用 Docker 服务提供的 API 来对容器进行管理。因此,只要所操作的平台支持Docker API , 就可以在其上利用 Compose 来进行编排管理
在 Web 应用中,常常需要将前端的请求通过反向代理转发到后端应用服务器。在这里,我们将使用 Docker Compose 来编排 Nginx 和 Tomcat 两个服务。 Nginx 将作为前端的反向代理服务器,接收客户端请求并将其转发到后端的 Tomcat 容器。 Tomcat 则负责处理 Web 应用的请求。
二.项目结构
docker compose 环境部署

如果本身下载比较慢,建议更换相应配置或者提高网络质量
三.YAML****文件格式及编写注意事项
YAML ( YAML Ain't Markup Language )是一种简洁的数据序列化格式,常用于配置文件。它比 JSON 更加简洁易读,并且支持更复杂的数据结构。
1.YAML****基本语法
大小写敏感 : YAML 是大小写敏感的,所以一定要注意区分大小写。
缩进 : YAML 使用空格进行缩进, 不支持 TAB 缩进 。通常推荐使用两个空格作为一个层级的缩
进。
列表 :列表项使用 - (短横线)表示。
字典 :字典使用 : (冒号)连接键值对,冒号后面需要加一个空格。
注释 :使用 # 来添加注释。
字符串 :如果字符串包含特殊字符,可以使用单引号 ' 或双引号 " 来包裹。
数据结构:


2.Docker Compose****配置常用字段


3.Docker Compose****常用命令

4.Docker Compose****文件结构

5.YAML****示例


以上是dockerfile文件编写,接下来是docker-compose编排:


注意事项:
文件路径 :在 docker - compose.yml 文件中, context 和 volumes 路径都是相对路径,相对于
docker - compose.yml 文件所在的目录。
字段区分 : YAML 格式中, services 下定义的每个服务都会有自己的配置项,例如 image 、
build 、 ports 等。确保每个字段的位置和缩进正确。
服务间的依赖关系 :例如, depends_on 可以控制服务启动的顺序,确保依赖的服务先启动。
四.准备Nginx配置
在 nginx/nginx.conf 中,配置 Nginx 作为反向代理,转发请求到 Tomcat 服务:

proxy_pass http://tomcat:8080 表示将请求转发到名为 tomcat 的服务(在 Compose 中,
这个名称会自动解析为 Tomcat 容器的名称)。
配置 proxy_set_header 是为了确保转发请求时, Nginx 会把客户端的 IP 和请求头传递给后端服
务器。
五.编写docker**-**compose.yml
接下来,我们编写 docker - compose.yml 配置文件,定义 Nginx 和 Tomcat 两个服务:


depends_on 确保 Nginx 服务启动时, Tomcat 服务已启动并运行。
networks 部分将两个服务连接到同一个 Docker 网络 app_network ,保证它们之间可以相互通
信
六.启动服务
完成以上配置之后,可以用docker-compose执行以下命令启动项目:

总结:
今天主要是分享了如何通过 Docker Compose,在一个 YAML 配置文件中定义多个服务,并实现容器之间的联动,希望对读者们有所帮助!