以下是关于 Docker Compose 的详细使用指南和核心功能解析:
一、Docker Compose 核心价值
Docker Compose 是用于 定义和编排多容器应用 的工具,通过 YAML 文件实现以下功能:
• 一键启停:用单条命令管理多个关联容器
• 环境隔离:为每个服务创建独立运行环境
• 依赖管理:自动处理服务启动顺序
• 配置复用:标准化开发/测试/生产环境
二、完整使用流程
1. 安装 Docker Compose
# Linux 系统安装(需先安装 Docker)
sudo apt update
sudo apt install docker-compose-plugin# 验证安装
docker compose version
2. 编写 compose 文件
创建 docker-compose.yml
文件:
version: '3.8'services:webapp:image: your-webapp:latestports:- "8080:80"depends_on:- redis- mysqlredis:image: redis:alpineports:- "6379:6379"mysql:image: mysql:8.0environment:MYSQL_ROOT_PASSWORD: secret
3. 常用操作命令
命令 | 功能 | 示例 |
---|---|---|
up | 启动所有服务 | docker compose up -d |
down | 停止并删除容器 | docker compose down -v |
ps | 查看运行状态 | docker compose ps |
logs | 查看日志 | docker compose logs -f web |
build | 构建自定义镜像 | docker compose build |
三、核心功能详解
1. 多服务定义
services:frontend:image: nginx:alpineports:- "80:80"backend:build: ./backendenvironment:- DB_HOST=mysqlmysql:image: mysql:8.0volumes:- db_data:/var/lib/mysql
2. 网络配置
networks:front-tier:driver: bridgeback-tier:driver: bridgeservices:frontend:networks:- front-tierbackend:networks:- front-tier- back-tier
3. 数据持久化
volumes:db_data:driver: localservices:mysql:volumes:- db_data:/var/lib/mysql- ./mysql/conf.d:/etc/mysql/conf.d
4. 环境变量管理
# 使用 .env 文件
environment:DB_PASSWORD: ${DB_SECRET}# 命令行覆盖
docker compose -e DB_SECRET=newpass up
5. 健康检查与依赖
services:api:depends_on:redis:condition: service_healthyredis:healthcheck:test: ["CMD", "redis-cli", "ping"]interval: 10s
四、进阶使用场景
1. 多环境配置
# docker-compose.prod.yml
services:web:deploy:replicas: 3resources:limits:cpus: "0.5"memory: 512M# 启动生产环境
docker compose -f docker-compose.yml -f docker-compose.prod.yml up
2. 服务扩展
# 水平扩展实例
docker compose up -d --scale web=3# 动态调整资源
docker compose up -d --compatibility
3. 密钥管理
secrets:db_password:file: ./secrets/db_password.txtservices:mysql:secrets:- db_password
五、企业级实践方案
1. CI/CD 集成
# .gitlab-ci.yml
stages:- test- deploycompose-test:stage: testscript:- docker compose -f docker-compose.test.yml up -d- run-tests.sh- docker compose downproduction-deploy:stage: deployscript:- docker compose -f docker-compose.prod.yml up -d
2. 监控配置
services:prometheus:image: prom/prometheusports:- "9090:9090"volumes:- ./prometheus.yml:/etc/prometheus/prometheus.ymlgrafana:image: grafana/grafanaports:- "3000:3000"
六、可视化工具推荐
-
Portainer:
docker compose -f portainer-compose.yml up -d
# portainer-compose.yml services:portainer:image: portainer/portainer-ceports:- "9000:9000"volumes:- /var/run/docker.sock:/var/run/docker.sock
-
Docker Compose UI:
docker run -d -p 5000:5000 --privileged -v /var/run/docker.sock:/var/run/docker.sock frooodle/saint-pablo
七、性能优化技巧
- 构建缓存:
services:app:build:context: .cache_from:- myapp:latest
- 资源限制:
deploy:resources:limits:cpus: '0.75'memory: 1Greservations:cpus: '0.5'memory: 512M
通过合理运用这些功能,Docker Compose 可以显著提升容器化应用的开发效率和运维质量。建议从简单配置开始,逐步应用高级特性,最终实现全生命周期容器化管理。