Docker Compose 服务图可视化工具
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/docker-compose-service-graph-visualizer
技能介绍
你在排查什么
当 docker-compose.yml 膨胀到几十行之后,depends_on、links、自定义网络和卷挂载之间的关系很难只靠肉眼维护。一个容器连不上时,你通常要依次确认:它和谁在同一网络里、依赖的服务是否真的先启动完成、端口是否暴露在预期地址上、挂载的卷是否指对了宿主路径。这些信息散落在 YAML 各处,全靠人脑在脑内渲染成图。
这个技能就是来解决这个「读完 YAML 才能画出来」的问题:把声明式配置直接渲染成一张可交互的依赖图。
它做了什么
技能的工作链路很直接:
- 用 PyYAML 解析本地的
docker-compose.yml,把服务、网络、卷等顶层结构读成结构化对象; - 调用 Graphviz 生成依赖图的静态结构,再用 D3.js 渲染为可交互的前端视图;
- 图中标注四类关键信息:
- 端口映射(ports 声明的宿主端口与容器端口对应关系)
- 卷挂载(volumes 声明的宿主路径与容器路径绑定)
- 网络拓扑(服务归属的网络、自定义 bridge 网络之间的连通关系)
- 健康检查状态(healthcheck 定义的探针及其运行状态)
对排查问题来说,这相当于把「启动顺序假设」和「网络连通假设」显式画出来:图中节点之间的连线就是服务间依赖,而不是凭记忆去猜 depends_on 写了谁。
适用边界与注意点
- 输入是 Compose file format 的配置文件,前提是你所在环境使用 Docker Compose(而非仅 Docker Swarm 的 legacy compose file format)。技能读取的是
docker-compose.yml的静态声明,因此图中的健康检查状态反映的是配置定义,不等同于容器运行时的实时指标——真正的运行时状态仍需结合docker compose ps、docker inspect等 CLI 输出交叉验证。 - Docker CLI 是前置工具之一,但图本身的数据来源是 YAML 静态解析,而不是容器运行时采集。
- 上游资料来源于
docker/compose官方 README 的提取内容,文档细节可参考https://docs.docker.com/compose/。
使用场景
- 排查服务连不上问题,需要快速看清服务间的网络归属和依赖启动顺序
- 梳理多容器项目的端口暴露和卷挂载配置,确认宿主机路径与容器路径对应关系
- 接手大型 Compose 项目,想要通过交互式依赖图直观理解整体网络拓扑结构
- 验证健康检查配置,需要确认各服务的探针定义及其在图中的状态标注
适合人员
- 后端工程师,需要在多容器项目里快速定位服务依赖关系和网络连通问题
- DevOps 工程师,负责维护 Compose 部署环境并需要排查启动顺序和端口映射配置
- 负责容器化项目的新成员,希望通过可视化方式快速理解服务间依赖和网络拓扑