多服务编排示例
Docker Compose 可以同时管理多个服务,实现完整应用环境的快速部署。本节以 Web、数据库和缓存服务为例,演示多服务编排。
1. 示例应用架构
- Web 服务:使用 Nginx 提供静态页面
- 应用服务:使用 Node.js 提供 API
- 数据库服务:MySQL 数据库
- 缓存服务:Redis
2. docker-compose.yml 示例
yaml
version: "3.9"
services:
web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./html:/usr/share/nginx/html:ro
networks:
- appnet
app:
image: node:20
working_dir: /app
volumes:
- ./app:/app
command: "node server.js"
depends_on:
- db
- redis
networks:
- appnet
db:
image: mysql:8
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: mydb
volumes:
- db_data:/var/lib/mysql
networks:
- appnet
redis:
image: redis:7
ports:
- "6379:6379"
networks:
- appnet
networks:
appnet:
volumes:
db_data:3. 启动与管理
- 启动所有服务:
bash
docker-compose up -d- 查看日志:
bash
docker-compose logs -f- 停止并删除容器:
bash
docker-compose down4. 特性说明
- 依赖管理:
depends_on指定服务启动顺序 - 共享网络:所有服务连接同一网络,容器间可通过服务名通信
- 数据持久化:数据库使用命名卷存储数据
- 服务隔离:每个服务运行在独立容器中,便于扩展和维护
通过该多服务示例,开发者可以快速理解 Docker Compose 的服务定义、依赖管理、网络配置与数据持久化方式,实现完整多容器应用部署。