3 вопросов
Кросс-компиляция (GOOS/GOARCH), линковка (-ldflags -X для вшивания версии, -s -w для уменьшения бинарника), CGO_ENABLED=0 для статической сборки, Docker scratch-образы.
Go поддерживает кросс-компиляцию через переменные окружения GOOS и GOARCH. CGO_ENABLED=0 нужен, если используется CGo.
Подробнее →CGO_ENABLED=0 отключает CGo и создает статический бинарник. Это позволяет запускать его в минимальных Docker-образах (scratch, distroless) без libc.
Подробнее →go build -ldflags="-X main.version=1.0 -s -w" вшивает значение переменной в бинарник и убирает символы отладки для уменьшения размера.
Подробнее →