Docker Compose 编排

目录

前言:

[一.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 示例)

四.准备Nginx配置

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

相关推荐
JadenOliver10 小时前
Docker 守护进程核心配置入口:daemon.json
docker·daemon.json
原神启动111 小时前
K8S(九)—— Kubernetes 集群调度全面解析
云原生·容器·kubernetes
用户938169125536011 小时前
Ubuntu系统docker错误,failed to do request: Head "https://registry-1.docker.io/v2/...
docker
m0_7482459212 小时前
Docker 容器基本操作
运维·docker·容器
咋吃都不胖lyh12 小时前
Docker 是什么?全面解析容器化技术
运维·docker·容器
阿杰 AJie12 小时前
Docker 常用镜像启动参数对照表
运维·docker·容器
db_cy_206213 小时前
Docker+Kubernetes企业级容器化部署解决方案(阶段一)
docker·容器·kubernetes·云计算·负载均衡·运维开发
王同学 学出来14 小时前
vue+nodejs项目在服务器实现docker部署
服务器·前端·vue.js·docker·node.js
last demo14 小时前
docker容器
运维·docker·容器
海鸥8114 小时前
k8s 国内无法下载docker images的分析
docker