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

相关推荐
kabcko8 小时前
Windows10安装Docker
运维·docker·容器
A-刘晨阳8 小时前
K8S 部署 CoreDNS 之 DNS 域名获取
运维·云原生·容器·kubernetes·dns·coredns
新缸中之脑9 小时前
在Docker中运行OpenClaw
运维·docker·容器
wsy_6669 小时前
docker
java·spring cloud·docker
lpruoyu9 小时前
【Docker进阶-04】容器挂载&docker cp
docker·容器
EverydayJoy^v^9 小时前
RH134学习进程——十二.运行容器(3)
linux·容器
Don't Look Down9 小时前
windows 脱机安装wsl 及 Docker Desktop 集成
windows·docker·容器
qq_278787779 小时前
Windows 本地 EasySwoole 项目(Docker Desktop 挂载运行+热加载配置)
windows·docker·容器·easyswoole
计算机小手19 小时前
一个带Web UI管理的轻量级高性能OpenAI模型代理网关,支持Docker快速部署
经验分享·docker·语言模型·开源软件
坚持学习前端日记20 小时前
常见docker指令
docker·容器·eureka