Skip to content

第 19 章 Docker 部署与可观测性 ​

学习目标 ​

学完本章,你应该能:

  1. 理解容器化部署的价值
  2. 掌握 fba 的 Docker Compose 部署方式
  3. 了解 Grafana 可观测性体系

一、为什么要容器化部署 ​

开发环境和生产环境不一致,是"本地能跑、上线就崩"的罪魁祸首。

Docker 通过容器把应用和依赖一起打包,保证任何环境运行一致。

Docker:容器化技术,把应用 + 依赖 + 配置打包成"镜像",随处运行。 Docker Compose:编排多个容器的工具,一键启动整个应用(数据库 + Redis + 后端 + ...)。

fba 已把 Docker Compose 编排准备好,MySQL / PostgreSQL 生产可用。

传统部署 vs 容器化部署 ​

二、fba 的部署配置 ​

fba 的部署配置在 deploy/ 目录:

deploy/
├── backend/          # 后端部署配置
│   ├── Dockerfile    # 后端镜像构建文件
│   └── ...
└── ...

部署方式在官方文档的 backend/deploy/Docker.html 有详细说明。

三、部署基本流程 ​

  1. 准备好 Docker 和 Docker Compose 环境
  2. 配置生产环境变量(数据库连接、密钥等)
  3. 使用 Docker Compose 编排启动:
shell
docker-compose up -d

fba 已经配好了 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)