在腾讯云服务器上使用 Ubuntu + Docker 部署服务时,绘制一张 部署拓扑图(Architecture Diagram) 可以帮助你清晰地理解整个系统的结构、组件之间的关系以及网络通信方式。
下面是一个典型的 腾讯云 Ubuntu 服务器上使用 Docker 部署应用的架构拓扑图描述。你可以根据这个结构使用工具如 draw.io、Lucidchart 或者 Visio 来绘制图形化拓扑图。
🧱 拓扑图层级说明
1. 云平台层
- 腾讯云(Tencent Cloud)
- 区域:如广州、上海等
- 实例类型:CVM(Cloud Virtual Machine)
2. 操作系统层
- Ubuntu Server(例如:Ubuntu 20.04 LTS / 22.04 LTS)
3. 容器运行环境层
- Docker Engine
- 容器化服务:
- Web 应用(如 Nginx、React 前端)
- 后端服务(如 Spring Boot、Node.js、Python Flask/Django)
- 数据库(如 MySQL、PostgreSQL、MongoDB)
- 缓存服务(如 Redis)
- 其他中间件(如 RabbitMQ、MinIO 等)
4. 网络层
- 内部网络(Docker 自定义 Bridge 网络或 Host 模式)
- 外部访问:
- 安全组配置开放端口(如 80、443、22)
- 可能使用 CLB(负载均衡器)或 CDN
- 域名解析(DNS -> CVM IP)
5. 持久化与安全
- 数据卷挂载(Volume 映射到宿主机)
- 使用
.env文件管理敏感信息 - SSL 证书(可选,通过 Nginx 或 Traefik 配置 HTTPS)
📐 示例拓扑图结构(文字版)
+--------------------------------------------------+
| 腾讯云 (Tencent Cloud) |
| |
| +-------------------------------------------+ |
| | Ubuntu 服务器 | |
| | | |
| | +------------+ +----------------+ | |
| | | Docker Engine | | 宿主机网络设置 | | |
| | +------------+ +----------------+ | |
| | | |
| | +---------------+ | |
| | | Docker 网络 | <--------------------+ | |
| | +---------------+ | | |
| | | | | |
| | v | | |
| | +---------------+ | | |
| | | web 容器 | ——> Nginx / React | | |
| | +---------------+ | | |
| | | | | |
| | v | | |
| | +---------------+ | | |
| | | app 容器 | ——> Node.js / Java | | |
| | +---------------+ | | |
| | | | | |
| | v | | |
| | +---------------+ | | |
| | | db 容器 | ——> MySQL / Redis | | |
| | +---------------+ | | |
| | | |
| +-------------------------------------------+ |
| |
| 安全组:开放 80, 443, 22 |
| 域名:yourdomain.com → CVM公网IP |
+--------------------------------------------------+
🛠️ 常见部署组合示例
方案一:前后端分离 + 数据库
nginx: 提供前端页面服务(暴露 80)app: 后端 API(如 Node.js、Java、Python)mysql: 数据库服务(不对外暴露)redis: 缓存服务(内部使用)
docker run -d --name nginx -p 80:80 my-nginx
docker run -d --name app --link mysql:mysql my-app
docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=xxx mysql
docker run -d --name redis redis
方案二:使用 Docker Compose 统一编排
version: '3'
services:
nginx:
image: nginx
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
backend:
image: my-backend
depends_on:
- db
environment:
- DB_HOST=db
db:
image: mysql:8
environment:
MYSQL_ROOT_PASSWORD: root
📦 工具推荐
-
绘图工具:
- draw.io / diagrams.net
- Lucidchart
- Whimsical
- Microsoft Visio
-
文档工具:
- 使用 Markdown 图形插件(如 Mermaid.js)
- PlantUML 描述系统结构
✅ 小贴士
- 使用
docker network inspect查看容器间通信情况。 - 所有数据库类容器尽量不要暴露到公网,仅允许内网访问。
- 使用腾讯云的安全组限制外部访问,保障安全。
- 若需高可用,建议结合 CLB(负载均衡)和多台 CVM 使用。
如果你需要我帮你生成一个具体的图形化拓扑图模板(如 draw.io 的 XML 文件格式),也可以告诉我你的具体部署内容,我可以为你定制。
CDNK博客