简化 Ubuntu 上的 Golang 打包
一、一键化本地构建
二、用 Makefile 封装常用命令
新建 Makefile(放到项目根目录): makefile GO := go BIN := bin/myapp LDFLAGS := -ldflags “-s -w”
.PHONY: all build clean
all: build
build: CGO_ENABLED=0 GOOS=linux GOARCH=amd64 $(GO) build $(LDFLAGS) -o $(BIN) .
clean: rm -f $(BIN)
使用:make 或 make build;需要清理时 make clean。后续可扩展 target 如:release、test、docker 等。
三、跨平台与发布自动化
四、Docker 镜像极简打包
多阶段构建,产物小、部署一致(示例 Dockerfile): dockerfile
FROM golang:1.22-alpine AS builder WORKDIR /src COPY . . RUN go mod tidy RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags “-s -w” -o /app/myapp
FROM alpine:3.20 RUN apk --no-cache add ca-certificates WORKDIR /root/ COPY --from=builder /app/myapp . CMD [“./myapp”]
构建与运行: docker build -t myapp:latest . docker run --rm myapp:latest
说明:Alpine 基础镜像体积极小;CGO_ENABLED=0 避免运行时依赖外部 C 库。
五、常见问题与排查