Docker 映像檔最佳化

Docker 2025-01-02T02:00:00.000Z

Docker 映像檔最佳化

Docker 映像檔大小直接影響部署速度與儲存成本,最佳化後可從 1GB+ 降到 100MB 以下。

多階段建置(Multi-stage Build)

FROM node:20 AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build

FROM node:20-alpine
WORKDIR /app
COPY --from=builder /app/dist ./dist
COPY package*.json ./
RUN npm ci --production
CMD ["node", "dist/server.js"]

Layer 快取技巧

  1. 將變動少的指令放前面(如 COPY package.json
  2. 將變動多的指令放後面(如 COPY . .
  3. 合併 RUN 指令減少 Layer 數量
RUN apt update && apt install -y \
    curl \
    git \
    && rm -rf /var/lib/apt/lists/*

選擇輕量基礎映像檔

映像檔 大小 適用場景
ubuntu:22.04 77MB 需要完整 Linux
node:20 1GB Node.js 開發
node:20-alpine 120MB Node.js 生產
scratch 0MB Go 靜態編譯