不能。sublime text 是纯文本编辑器,无法直接启动 jaeger/zipkin 追踪服务;必须通过编辑 docker-compose.yml 并调用宿主机 docker 命令(如 docker-compose up)来启动容器化追踪服务。

Sublime Text 能不能直接启动 Jaeger/Zipkin 追踪服务?
不能。Sublime Text 是编辑器,不是容器运行时,docker-compose up 命令必须由宿主机 shell 执行。所谓“构建分布式追踪环境”,本质是用 Sublime 高效编写、校验、触发 docker-compose.yml,再交由本地 Docker 引擎拉起 Jaeger、Zipkin、应用服务及代理(如 Envoy)组成的多容器拓扑。
Jaeger 的 docker-compose.yml 怎么写才不报错?
常见错误是端口冲突、服务依赖顺序错乱、或 environment 项格式不合法(YAML 对缩进和冒号后空格极其敏感)。实际调试中,最易踩的坑是:
-
jaeger-all-in-one默认监听16686(UI)和14268(collector HTTP),若本地已有进程占用了这些端口,docker-compose up会卡在 “Starting…” 状态,但 Sublime 不提示——需手动执行docker-compose ps查看状态 - 若要让其他服务(如 Python Flask 应用)上报 trace,必须显式配置
JAEGER_ENDPOINT=http://jaeger:14268/api/traces,且jaeger是services下定义的服务名,不是localhost - 使用
depends_on仅控制启动顺序,不等待 jaeger ready;真正健康检查需靠healthcheck或外部脚本,否则应用可能因连接拒绝而崩溃
怎么让 Sublime 快速验证 docker-compose.yml 语法和结构?
靠插件 + 外部校验工具组合:先确保已安装 YAML 插件(非过时的 YAML Language),再手动设置右下角语法为 YAML;然后配一个 Build System 调用 yamllint:
新建 Build System,内容为:
{
"shell_cmd": "cd ${file_path} && yamllint docker-compose.yml",
"working_dir": "${file_path}",
"selector": "source.yaml",
"file_regex": "^(.*?):([0-9]+):([0-9]+):\s*(.*)$"
}
保存后,在 docker-compose.yml 中按 Ctrl+B 即可检查缩进、重复 key、非法字符等。注意:yamllint 需提前通过 pip install yamllint 安装,否则命令失败无提示。
为什么 Ctrl+B 启动后看不到 Jaeger UI?
因为 Sublime 的 Build System 只执行命令,不捕获 stdout/stderr 流,更不自动打开浏览器。你看到的只是命令返回码(0 表示执行成功,不代表服务就绪)。真实情况可能是:
-
docker-compose up -d返回 0,但容器秒退:执行docker-compose logs jaeger查日志,常见原因是storage.type=memory在高负载下 OOM,需换cassandra或elasticsearch - UI 访问地址不是
localhost:16686:Docker Desktop for Mac/Windows 使用虚拟机网络,localhost有效;Linux 上若用 rootless Docker,可能需访问127.0.0.1:16686或查docker inspect jaeger | grep IPAddress - Sublime 构建系统里漏了
-d参数:没加就前台阻塞,Ctrl+B会卡住,无法继续编辑
真正关键的一步,往往被忽略:分布式追踪不是启动一个 Jaeger 就完事,它要求所有被测服务都注入 client SDK 并正确配置 endpoint——这个配置项,恰恰是你在 Sublime 里编辑 app.py 或 main.go 时最容易写错的地方。











