第 19 章 Docker 部署与可观测性
学习目标
学完本章,你应该能:
- 理解容器化部署的价值
- 掌握 fba 的 Docker Compose 部署方式
- 了解 Grafana 可观测性体系
一、为什么要容器化部署
开发环境和生产环境不一致,是"本地能跑、上线就崩"的罪魁祸首。
Docker 通过容器把应用和依赖一起打包,保证任何环境运行一致。
Docker:容器化技术,把应用 + 依赖 + 配置打包成"镜像",随处运行。 Docker Compose:编排多个容器的工具,一键启动整个应用(数据库 + Redis + 后端 + ...)。
fba 已把 Docker Compose 编排准备好,MySQL / PostgreSQL 生产可用。
传统部署 vs 容器化部署
二、fba 的部署配置
fba 的部署配置在 deploy/ 目录:
deploy/
├── backend/ # 后端部署配置
│ ├── Dockerfile # 后端镜像构建文件
│ └── ...
└── ...部署方式在官方文档的 backend/deploy/Docker.html 有详细说明。
三、部署基本流程
- 准备好 Docker 和 Docker Compose 环境
- 配置生产环境变量(数据库连接、密钥等)
- 使用 Docker Compose 编排启动:
shell
docker-compose up -dfba 已经配好了 MySQL/PostgreSQL、Redis、后端服务等容器,一键启动。
Docker Compose 编排架构
四、可观测性(Grafana)
可观测性指你能"看到"系统内部的运行状态,出现问题能快速定位。fba 集成 Grafana 实现全链路可观测:
| 能力 | 说明 |
|---|---|
| 指标(Metrics) | Prometheus 抓取系统指标 |
| 链路追踪(Trace) | OpenTelemetry 追踪请求链路 |
| 日志 | 全链路日志,带 Trace ID |
相关配置以 GRAFANA_ 开头,如:
python
GRAFANA_METRICS_ENABLE = True # 是否启用 Grafana 套件注意:官方提示"如不需要可观测性集成,不建议启用",按需开启即可。
五、可观测性三件套的关系
简单理解"监控三件套":
- Metrics(指标):告诉你"系统现在怎么样"(CPU、内存、请求量)
- Trace(链路):告诉你"一个请求走了哪些路"(哪个环节慢)
- Log(日志):告诉你"具体发生了什么"(错误详情)
三者配合,排查问题就非常高效。前面提过的 Trace ID 就是把三者串起来的钥匙。
可观测性三件套
六、部署相关注意事项
- 生产环境:把
ENVIRONMENT设为prod,会禁用在线文档(安全考虑) - 敏感信息:密钥、密码通过环境变量注入,不要写死在代码里
- 数据库主键模式:部署前确定好主键模式,不要随意更改
七、常见疑问
Q1:Docker Compose 和 Docker 有什么区别? Docker 是单个容器的技术,Docker Compose 是"编排工具",能一次启动多个容器(后端 + 数据库 + Redis 等),并管理它们的依赖关系。
Q2:可观测性一定要开吗? 不一定。小项目可以不开,省资源。但生产环境建议开,出问题时能快速定位。
本章小结
关键要点回顾:
- Docker Compose 一键编排,MySQL/PostgreSQL 生产可用
- 部署配置在
deploy/目录 - Grafana 提供指标 + 链路 + 日志的全链路可观测
- 生产环境设
ENVIRONMENT=prod,敏感信息用环境变量
下一步: 最后一章,我们做一个综合实战项目,并回顾整个学习路线。
对应官方文档:
Docker 部署(backend/deploy/Docker.html)