Ответ
COPY и ADD — это инструкции Dockerfile для копирования файлов в образ, но с ключевыми отличиями:
- COPY — просто копирует файлы/директории из хоста в образ.
Пример:
COPY ./app /app
-
ADD — делает то же самое, но с дополнительными возможностями:
- Распаковывает локальные .tar-архивы автоматически.
- Поддерживает URL в качестве источника (но без распаковки).
Пример:
ADD app.tar.gz /app # архив распакуется
ADD https://example.com/file.txt /tmp/ # скачает файл
Когда использовать:
- COPY — для простого копирования (рекомендуется по умолчанию).
- ADD — только если нужны его специфичные фичи (распаковка или URL).
⚠️ ADD с URL менее предсказуем (нет проверки checksum), а его "магия" с архивами может запутать.