mirror of
https://github.com/dockersrc/go
synced 2026-06-24 14:01:08 -04:00
d2e92d12b2
The arm64 build was stuck for 12+ hours compiling gopls, dlv, and other Go tools from source under QEMU user-mode emulation. QEMU makes Go compilation 20-50× slower than native; gopls alone can take hours. Fix: add a --platform=$BUILDPLATFORM go-tools stage in the Dockerfile that cross-compiles all go install tools natively on amd64 using Go's built-in cross-compilation (GOOS=linux GOARCH=$TARGETARCH). The binaries are then COPYed into the main build stage before 05-custom.sh runs. No QEMU is involved for any compilation step. - Dockerfile: add go-tools stage using --platform=$BUILDPLATFORM with golang:alpine; cross-compiles goimports, stringer, gopls, govulncheck, dlv, gops, benchstat, wire, mockgen, protoc-gen-go, protoc-gen-go-grpc; COPY /go/bin/ → /usr/local/bin/ before the 05-custom.sh RUN layer - rootfs/root/docker/setup/05-custom.sh: remove all go install commands (11 tools now provided by the Dockerfile stage); keep go clean -modcache/-cache cleanup Dockerfile rootfs/root/docker/setup/05-custom.sh