Sobes.tech
Назад к вопросам
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 проще для понимания.