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 快取技巧
- 將變動少的指令放前面(如
COPY package.json) - 將變動多的指令放後面(如
COPY . .) - 合併 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 靜態編譯 |