层顺序优化
核心原则
不常变化的层放前面
经常变化的层放后面
示例
# ❌ 不好:任何文件变化都重新安装依赖
COPY . .
RUN npm install
# ✅ 好:先复制依赖文件,利用缓存
COPY package*.json ./
RUN npm install
COPY . .
Python 示例
# ✅ 先复制依赖文件
COPY requirements.txt .
RUN pip install -r requirements.txt
# 再复制代码
COPY . .
小结
| 原则 | 说明 |
|---|---|
| 不变的层在前 | 命中缓存 |
| 变化的层在后 | 避免重复构建 |
| 先复制依赖文件 | 依赖不变则用缓存 |