CentOS 下 Golang 打包优化策略
一 构建与编译优化
二 容器化与镜像优化
三 分发与系统级优化
四 常用命令与配置示例
本机静态编译(CentOS 目标)
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -installsuffix cgo -ldflags “-s -w” -o myapp main.go
并行构建与缓存控制
GOMAXPROCS=$(nproc) go build -p $(nproc) -o myapp .
go clean -cache
UPX 压缩
sudo yum install -y epel-release && sudo yum install -y upx
upx --best --lzma myapp
Docker 多阶段构建(Alpine 运行)
FROM golang:1.23-alpine AS build
WORKDIR /app
COPY . .
RUN go mod download && CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags “-s -w” -o /app/myapp .
FROM alpine:latest
WORKDIR /app
COPY --from=build /app/myapp .
CMD [“./myapp”]
RPM 打包简例(SPEC 关键片段)
BuildRequires: golang
%build
go build -o %{buildroot}/usr/bin/myapp .
%install
mkdir -p %{buildroot}/usr/bin
cp myapp %{buildroot}/usr/bin/
%files
/usr/bin/myapp