用于 Jenkins-Agent 中的 PodTemplate 使用,内置 Golang 的应用。
2.9K
dragonzw/builder-go 是**dragonzw/builder-base 镜像的 Go 语言专项版本**,其核心作用是封装一个 定制化的 Go 语言构建基础环境,提供预安装的 Go 编译工具、依赖管理与系统优化,用于作为“父镜像”快速构建 Go 语言应用的容器镜像(如编译 Go 源码、打包二进制文件、生成最小化镜像)。
builder-base 镜像”信息)在之前的对话中,dragonzw/builder-base 镜像的定义明确提到:
go)、GOPATH 环境变量、git(用于拉取 Go 模块)等;Dockerfile 继承 builder-base,用 go build 编译源码)。而**builder-go** 是**builder-base 的细分**,将“Go 语言构建”的能力独立封装,更聚焦 Go 开发者的需求。
dragonzw/builder-go 的具体功能(推断)基于“builder-base 的 Go 相关配置”和“Go 构建的常规需求”,builder-go 镜像应包含以下核心功能:
go-1.22);go mod、dep),支持依赖自动下载。gcc、make,用于编译 C 扩展);git,用于拉取 Go 模块源码);curl/wget 下载依赖、jq 处理 JSON、tar 压缩产物)。alpine:3.19、ubuntu:22.04),体积精简(通常 < 200MB);GOPROXY=https://goproxy.cn,加速 Go 模块下载);TZ=Asia/Shanghai)、语言编码(LANG=C.UTF-8)。/go/pkg/mod 存储 Go 模块、/app 存储源码);go 用户),提升安全性。dragonzw/builder-go 的核心价值是简化 Go 应用镜像的构建流程,适用于以下场景:
通过 Dockerfile 继承 builder-go,直接编译 Go 源码并生成镜像(无需重复安装 Go 工具):
# 继承 builder-go 镜像(假设标签为 go-1.22)
FROM dragonzw/builder-go:go-1.22
# 复制 Go 源码到容器
COPY ./src /app
# 切换到源码目录
WORKDIR /app
# 用预安装的 Go 编译(生成二进制文件)
RUN go build -o my-go-app main.go
# 设置容器启动命令(运行二进制文件)
CMD ["./my-go-app"]
团队内所有成员使用同一 builder-go 镜像,避免因本地 Go 版本、依赖差异导致的“构建不一致”问题。
在 Jenkins、GitLab CI 等流水线中,用 builder-go 作为构建节点镜像,快速完成 Go 代码的编译、测试、打包(如生成二进制文件后,用 b2i-sample 镜像容器化)。
与 builder-base 的关系:
builder-go 是 builder-base 的Go 专项子集,功能更聚焦(仅保留 Go 相关工具),体积更小。若需构建多语言应用,仍可使用 builder-base。
非官方镜像的风险:
该镜像由个人(dragonzw)维护,稳定性、安全性不如官方 Go 镜像(如 golang:1.22-alpine)。生产环境建议优先使用官方 Go 镜像或基于官方镜像自行定制(如添加团队常用依赖)。
版本兼容性:
镜像标签(Tag)通常对应Go 版本(如 go-1.22)和基础系统版本(如 alpine-3.19),需确认与目标应用的兼容性(如 Go 模块是否支持该版本)。
dragonzw/builder-go 是一个定制化的 Go 语言构建基础镜像,核心价值是将“Go 编译工具+依赖管理+系统优化”打包为标准化环境,作为“父镜像”快速构建 Go 应用镜像。其定位适合Go 开发者简化构建流程、团队统一构建环境、CI/CD 流水线集成,是 builder-base 镜像的 Go 专项延伸。
Content type
Image
Digest
sha256:82c41b6c8…
Size
704.9 MB
Last updated
6 months ago
docker pull dragonzw/builder-go