多服务编排示例
Docker Compose 可以同时管理多个服务,实现完整应用环境的快速部署。本节以 Web、数据库和缓存服务为例,演示多服务编排。
1. 示例应用架构
- Web 服务:使用 Nginx 提供静态页面
- 应用服务:使用 Node.js 提供 API
- 数据库服务:MySQL 数据库
- 缓存服务:Redis
2. docker-compose.yml 示例
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. 启动与管理
- 启动所有服务:
docker-compose up -d
- 查看日志:
docker-compose logs -f
- 停止并删除容器:
docker-compose down
4. 特性说明
- 依赖管理:
depends_on指定服务启动顺序 - 共享网络:所有服务连接同一网络,容器间可通过服务名通信
- 数据持久化:数据库使用命名卷存储数据
- 服务隔离:每个服务运行在独立容器中,便于扩展和维护
通过该多服务示例,开发者可以快速理解 Docker Compose 的服务定义、依赖管理、网络配置与数据持久化方式,实现完整多容器应用部署。
相关内容
- 构建自定义 Registry 本章节介绍如何搭建和管理 Docker 私有 Registry,包括部署自定义 Registry、配置存储与访问权限、镜像推送与拉取流程,以及安全与备份策略,满...
- 与 Kubernetes 的比较与协作 本章节对比 Docker 与 Kubernetes 的异同点,并讲解两者的协作方式,包括容器管理、编排、服务发现、部署流程和最佳实践,帮助理解容器生态系统中的应...
- Rootless Docker 与安全边界 本章节介绍 Rootless Docker 的使用方法及安全边界管理,包括非 root 容器运行原理、配置步骤、权限限制和网络隔离策略,提升容器安全性并降低宿主...
- 常用命令速查表 本章节提供 Docker 常用命令速查表,包括镜像管理、容器操作、网络配置、卷管理、日志查看及调试命令,帮助开发者快速查找和使用 Docker 命令,提高容器管...
- 参考文档与学习资源 本章节整理 Docker 官方文档、社区资源、教程和示例项目,帮助开发者系统学习 Docker 技术,掌握容器化应用的构建、运行、管理和优化方法。
- 示例项目与练习 本章节提供 Docker 示例项目和练习,包括容器化应用部署、Docker Compose 多服务编排、镜像优化、网络配置和存储管理,帮助开发者通过实战加深对...