CGO_ENABLED=0 отключает CGo - механизм вызова C-кода из Go. Результат: полностью статический бинарник, не зависящий от libc и других C-библиотек.
Зачем это нужно:
FROM scratch или distroless (размер образа ~5-10 МБ вместо 700+ МБ)# Типичный Dockerfile для Go
FROM golang:1.23 AS builder
WORKDIR /app
COPY . .
RUN CGO_ENABLED=0 go build -o /myapp
FROM scratch
COPY --from=builder /myapp /myapp
ENTRYPOINT ["/myapp"]
Некоторые пакеты (например, net) по умолчанию используют CGo для DNS. С CGO_ENABLED=0 Go переключается на чистую Go-реализацию.