Go 容器化
多阶段构建
FROM golang:1.21-alpine AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 go build -o server .
FROM alpine:3.18
RUN apk add --no-cache ca-certificates
COPY --from=builder /app/server /usr/local/bin/
CMD ["server"]
超小镜像
FROM golang:1.21-alpine AS builder
WORKDIR /app
COPY . .
RUN CGO_ENABLED=0 go build -ldflags="-s -w" -o server .
FROM scratch
COPY --from=builder /app/server /server
CMD ["/server"]
小结
| 要点 | 说明 |
|---|---|
| 静态编译 | CGO_ENABLED=0 |
| scratch 镜像 | 最小化 |
| 优化标志 | -ldflags="-s -w" |