Nâng CaoGolang iconGolang

Docker image cho Go app tối ưu thế nào?

Cách tối ưu nhất là dùng multi-stage build: stage đầu tiên sử dụng image golang:1.22-alpine để compile source thành binary, stage thứ hai chỉ dùng scratch (image rỗng hoàn toàn) hoặc gcr.io/distroless/static rồi copy binary vào, cho ra final image chỉ 5-15MB thay vì hơn 1GB của golang base image.

  • Để binary chạy được trên scratch image, cần set CGO_ENABLED=0 khi build để tạo static binary không phụ thuộc vào thư viện C bên ngoài.
  • Nên tách layer COPY go.mod go.sumRUN go mod download riêng trước khi copy source code, để Docker cache lại dependency layer và chỉ rebuild khi dependency thay đổi, giúp tăng tốc build đáng kể.

Xem toàn bộ Golang cùng filter theo level & chủ đề con.

Mở danh sách Golang