84·语言实践进阶

Go 容器化

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"

练习编辑器

bash
Loading...