目录

前言:

一.Docker Compose简介

二.项目结构

三.YAML 文件格式及编写注意事项

1.YAML 基本语法

2.Docker Compose配置常用字段

3.Docker Compose 常用命令

4.Docker Compose 文件结构

5.YAML 示例

四.准备Nginx配置

五.编写 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 配置文件中定义多个服务,并实现容器之间的联动,希望对读者们有所帮助!

更多推荐