31·Dockerfile进阶

层缓存优化

层缓存优化

核心概念

# 每条指令 = 一个层
FROM node:18
COPY . .              # ❌ 任何文件变化都重新执行
RUN npm install       # 每次都重新安装

# ✅ 优化:利用缓存
FROM node:18
COPY package*.json ./
RUN npm install       # package.json 不变就用缓存
COPY . .              # 代码变化不影响依赖安装

缓存规则

层 N 缓存命中条件:
1. 父层没变
2. 指令没变
3. COPY/ADD 的文件内容没变

最佳实践

# 1. 不常变的放前面
FROM python:3.11
COPY requirements.txt .
RUN pip install -r requirements.txt  # 缓存
COPY . .                              # 代码变,依赖不变

# 2. 合并 RUN 减少层数
RUN apt-get update && \
    apt-get install -y curl && \
    rm -rf /var/lib/apt/lists/*

# 3. 使用 .dockerignore 排除无关文件

小结

技巧效果
不变的层放前面命中缓存
先复制依赖文件避免重复安装
合并 RUN减少层数

练习编辑器

bash
Loading...