Container By James

Dockerfile 最佳實踐:多階段建構 (Multi-stage Builds) 瘦身術

告別肥大的 Image

將編譯環境與執行環境分離是標準動作。例如 Go 語言專案:

  1. Build Stage:使用 golang:1.21 進行編譯,產生 Binary。
  2. Runtime Stage:使用 gcr.io/distroless/staticalpine 作為基底,僅複製 Binary 檔。

這樣做不僅能將 Image 大小從 800MB 縮減至 20MB,還能移除編譯工具與 Shell,大幅減少攻擊面。