自定义Grafana Docker镜像构建:Bingo代码作用与必要性咨询
Grafana Docker镜像构建相关问题解答
问题背景
我们基于Grafana源码Fork后主要修改了UI部分,在Apple Silicon环境构建Docker镜像时遇到问题,注释掉Dockerfile中以下代码后可成功构建:
RUN if [[ "$BINGO" = "true" ]]; then \ go install github.com/bwplotka/bingo@latest && \ bingo get -v; \ fi
1. 这段代码的具体作用是什么?
这段代码是用来安装并执行bingo工具的:
- bingo是Go生态里的工具,核心作用是统一管理项目依赖的各类Go工具版本,确保不同环境下构建时用的工具版本一致,避免版本差异引发的构建问题。
- 当环境变量
BINGO设为true时,会先安装最新版bingo,再执行bingo get -v,拉取项目定义的特定版本工具(比如代码生成工具、lint工具等),供后续构建流程使用。
2. 最终镜像部署在Linux服务器,Linux环境构建时是否需要保留这段代码?
分两种情况判断:
- 如果仅修改了UI部分,后端代码和官方构建流程没变动,且构建过程不需要bingo管理的工具,那可留可删:保留的话只要不把
BINGO设为true,这段代码就不会执行;删除也不影响UI相关构建。 - 如果官方Grafana构建流程依赖bingo安装的工具(比如后端代码生成、校验等步骤),那Linux环境构建时建议保留:x86_64架构的Linux对bingo支持更完善,不会出现Apple Silicon上的兼容问题,开启
BINGO=true就能正常拉取所需工具,保证构建流程完整。
内容的提问来源于stack exchange,提问作者Arefe
相关产品推荐
相关产品推荐

