COPY 与 ADD
COPY
# 复制文件
COPY index.html /usr/share/nginx/html/
# 复制目录
COPY src/ /app/src/
# 通配符
COPY *.py /app/
# 保持目录结构
COPY --chown=app:app src/ /app/src/
ADD
# ADD 比 COPY 多两个功能:
# 1. 自动解压 tar 文件
ADD archive.tar.gz /app/
# 2. 支持远程 URL
ADD https://example.com/file.txt /app/
COPY vs ADD
| 功能 | COPY | ADD |
|---|
| 复制文件 | ✅ | ✅ |
| 解压 tar | ❌ | ✅ |
| 远程 URL | ❌ | ✅ |
| 推荐度 | ⭐ 推荐 | 特殊场景 |
最佳实践
# ✅ 优先用 COPY(行为明确)
COPY requirements.txt /app/
RUN pip install -r requirements.txt
COPY . /app/
# ❌ 避免 ADD(除非需要解压)
ADD . /app/
小结
| 指令 | 推荐度 | 说明 |
|---|
COPY | ⭐ | 首选,行为明确 |
ADD | ⚠️ | 仅用于解压 tar |