
jaegertracing/protobufjaegertracing/protobuf-builder 是 Jaeger 项目官方提供的 Protobuf 构建工具镜像,集成了 Protobuf 编译器(protoc)、语言特定代码生成器(如 protoc-gen-go)及 Jaeger 项目专用的 Protobuf 定义文件(如 jaeger_idl)。该镜像旨在简化 Jaeger 项目及兼容项目中 Protobuf 文件的编译流程,确保构建环境一致性。
protoc 编译器,支持将 .proto 文件编译为多种编程语言代码(Go、Java、Python 等)。protoc-gen-go、protoc-gen-grpc-java 等),支持一键生成 gRPC 服务代码。.proto 文件与 Jaeger 标准定义的兼容性。.proto 文件(或依赖 Jaeger 预装定义)。从 Docker Hub 拉取最新版本镜像:
bashdocker pull jaegertracing/protobuf-builder:latest
指定版本(如 1.55.0,对应 Protobuf 编译器版本):
bashdocker pull jaegertracing/protobuf-builder:1.55.0
将本地目录(含 .proto 文件)挂载到容器,执行编译命令。示例:生成 Go 代码至本地 ./gen/go 目录:
bashdocker run --rm -v $(pwd):/workspace jaegertracing/protobuf-builder \ protoc \ --proto_path=/workspace \ # 指定 .proto 文件目录(本地挂载目录) --proto_path=/usr/local/jaeger-idl \ # Jaeger 预装 Protobuf 定义路径 --go_out=/workspace/gen/go \ # 输出 Go 代码至本地 ./gen/go --go_opt=paths=source_relative \ # Go 代码生成选项(相对路径) /workspace/path/to/your/file.proto # 待编译的 .proto 文件路径
直接引用容器内预装的 Jaeger Protobuf 文件(如 jaeger_api_v2.proto)进行编译:
bashdocker run --rm -v $(pwd):/workspace jaegertracing/protobuf-builder \ protoc \ --proto_path=/usr/local/jaeger-idl \ # Jaeger 定义路径 --go_out=/workspace/gen/go \ /usr/local/jaeger-idl/jaeger/api/v2/jaeger_api_v2.proto # 编译 Jaeger 官方 .proto 文件
镜像支持通过环境变量自定义编译行为,常用变量如下:
| 环境变量名 | 说明 | 默认值 |
|---|---|---|
PROTOBUF_VERSION | Protobuf 编译器版本(用于验证或覆盖内置版本) | 3.25.3 |
JAEGER_PROTOBUF_DIR | 容器内 Jaeger Protobuf 定义文件的根目录 | /usr/local/jaeger-idl |
PROTOC_GEN_GO_VERSION | Go 代码生成器(protoc-gen-go)版本 | 1.28.1 |
OUTPUT_LANG | 默认输出语言(可选:go、java、python),简化命令行参数 | go |
通过 docker-compose.yml 定义构建任务,适用于多文件批量编译场景:
yamlversion: '3.8' services: protobuf-builder: image: jaegertracing/protobuf-builder:latest volumes: - ./proto:/workspace/proto # 本地 Protobuf 文件目录 - ./gen:/workspace/gen # 输出代码目录(本地挂载) environment: - JAEGER_PROTOBUF_DIR=/usr/local/jaeger-idl - OUTPUT_LANG=go command: > protoc --proto_path=/workspace/proto --proto_path=${JAEGER_PROTOBUF_DIR} --go_out=/workspace/gen --go_opt=paths=source_relative /workspace/proto/*.proto
启动命令:
bashdocker-compose up
root)可能生成 root 权限文件,建议通过 --user $(id -u):$(id -g) 调整权限:
bashdocker run --rm -v $(pwd):/workspace --user $(id -u):$(id -g) jaegertracing/protobuf-builder ...
3.25.3)。-v /path/to/local/plugin:/usr/local/bin/ 挂载至容器 $PATH 目录。





manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务