在 Ubuntu 上减小 Golang 编译产物体积,常用且有效的手段如下(从最常用到进阶):
go build -ldflags="-s -w" main.go
-s:去掉符号表-w:去掉 DWARF 调试信息✅ 通常可减小 20%~30%
sudo apt install upx
upx --best --lzma your_binary
⚠️ 注意:
CGO_ENABLED=0 go build -ldflags="-s -w" main.go
FROM golang:1.22 AS builder
RUN CGO_ENABLED=0 go build -ldflags="-s -w"
FROM gcr.io/distroless/static
COPY --from=builder /app /app
或:
FROM alpine
go mod tidyimport _ 无用包查看依赖体积:
go mod why xxx
deadcode / staticcheckgo install golang.org/x/tools/cmd/deadcode@latest
go build -trimpath -ldflags="-s -w"
适合 CLI / 嵌入式:
tinygo build -o app main.go
⚠️ 不兼容所有标准库
| 方式 | 体积 |
|---|---|
| 默认编译 | 15 MB |
-s -w |
11 MB |
| + UPX | 4 MB |
| + distroless | 镜像 <10 MB |
CGO_ENABLED=0 go build -ldflags="-s -w" -o app main.go
upx --best --lzma app
如果你愿意,可以告诉我:
我可以给你一套针对性最优方案。