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

相关推荐
Code知行合壹2 小时前
Kubernetes实战进阶
云原生·容器·kubernetes
xuhe22 小时前
[重磅更新] 支持最新 Overleaf 6.x!我的私有化部署方案 xuhe2/sharelatex-ce 迎来大升级
linux·docker·github·科研·overleaf
不想画图2 小时前
dockerfile镜像构建和docker compose编排
docker·容器
半壶清水3 小时前
ubuntu中使用使用Docker-Compose管理MySQL、Apache、PHP容器
mysql·ubuntu·docker·php·apache
峰顶听歌的鲸鱼3 小时前
19.docker 图形化管理界面
运维·笔记·docker·容器·学习方法
好奇的菜鸟3 小时前
Windows 环境下使用 Docker 部署 Java 开发中间件完全指南
java·windows·docker
weixin_46683 小时前
K8S- Calico
云原生·容器·kubernetes
熙客3 小时前
阿里云流水线Docker方式部署操作实战(ACR+流水线)
阿里云·docker·云计算
忍冬行者3 小时前
k8s集群容器创建报failed to write 10087 to cgroup.procs处理
云原生·容器·kubernetes