Назад к вопросам
Senior
4
В чём разница между COPY и ADD в Dockerfile?
Компании, где спрашивали
сбер платформ в
Ответ от нейросети
sobes.tech AI
В Dockerfile инструкции COPY и ADD используются для копирования файлов из контекста сборки в образ, но между ними есть важные отличия:
-
COPY — простая и предсказуемая команда, копирует файлы и каталоги из контекста сборки в указанный путь внутри контейнера. Не выполняет никаких дополнительных действий.
-
ADD — расширенная версия COPY, кроме копирования файлов, умеет:
- Распаковывать локальные архивы (tar, gzip и др.) прямо в образ.
- Копировать файлы по URL (загружать их из интернета).
Рекомендуется использовать COPY, если нужно просто скопировать файлы, так как это более прозрачный и безопасный способ. ADD стоит применять только если нужна функциональность распаковки или загрузки из URL.
Пример:
# Копируем локальный файл
COPY ./app /app
# Распаковываем архив в образ
ADD archive.tar.gz /app
# Загружаем файл из интернета (редко используется)
ADD https://example.com/file.txt /app/file.txt
Использование COPY помогает избежать неожиданных эффектов и делает Dockerfile проще для понимания.