Docker Compose.yml文件的核心用途是:通过一个YAML格式的配置文件,定义和运行多容器Docker应用程序。
主要功能与作用
- 简化多容器应用管理
• 传统方式:需要手动运行多个docker run命令,分别设置网络、卷、环境变量等
• Compose方式:一个docker-compose up命令即可启动所有服务
- 标准化环境配置
示例:定义Web应用+数据库+缓存
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "80:80"
db:
image: postgres:14
environment:
POSTGRES_PASSWORD: example
redis:
image: redis:alpine
- 核心功能特性
功能 说明 实际应用场景
服务定义 定义应用所需的各个容器(服务) Web服务器、数据库、消息队列等
网络配置 自动创建容器间网络,实现服务通信 前端容器访问后端API
卷挂载 配置数据持久化和文件共享 数据库数据持久化、代码热更新
环境变量 集中管理配置参数 开发/测试/生产环境切换
依赖关系 定义服务启动顺序 先启动数据库,再启动应用服务
扩展配置 支持配置复用和扩展 使用extends继承基础配置
- 典型工作流程
- 编写 docker-compose.yml 定义服务
- 运行 docker-compose up 启动所有服务
- 运行 docker-compose down 停止并清理
- 运行 docker-compose logs 查看日志
- 运行 docker-compose ps 查看服务状态
- 实际应用价值
• 开发环境一致性:确保团队所有成员使用相同的服务配置
• 快速部署:一键部署复杂应用栈(如LAMP、MEAN等)
• CI/CD集成:在流水线中快速搭建测试环境
• 微服务管理:简化多个微服务容器的协调管理
• 文档化:配置文件本身就是应用架构的文档
- 文件结构示例
version: '3.8' # Compose文件版本
services: # 定义所有服务容器
app:
build: . # 使用Dockerfile构建
ports:
- "3000:3000"
depends_on:
- db
db:
image: mysql:8.0
volumes:
- db_data:/var/lib/mysql
volumes: # 定义数据卷
db_data:
简单来说,Docker Compose让"多容器Docker应用"的管理变得像管理"单个应用"一样简单,是现代化开发部署的重要工具。