一 准备与安装
二 本地构建与多平台交叉编译
三 生成完全静态二进制与体积优化
四 打包分发与交付物
五 自动化与容器化
Makefile 示例(可按需扩展多平台矩阵):
GO := go
BIN := myapp
OUT := bin/$(BIN)
LDFLAGS := -s -w
.PHONY: all build clean
all: build
build:
mkdir -p bin
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 $(GO) build -ldflags “$(LDFLAGS)” -o $(OUT) ./cmd/myapp
clean:
rm -rf bin
Docker 多阶段构建(产出极小镜像):
FROM golang:1.22 AS builder
WORKDIR /app
COPY . .
RUN go mod download
RUN CGO_ENABLED=0 GOOS=linux go build -ldflags “-s -w” -o myapp ./cmd/myapp
FROM scratch
COPY --from=builder /app/myapp /myapp
ENTRYPOINT [“/myapp”]
构建:docker build -t myapp:latest .
多平台并行构建工具:使用 gox 生成多平台产物,例如:gox -output=“dist/{{.OS}}_{{.Arch}}/{{.Dir}}” ./cmd/myapp。