Для чего нужна инструкция ADD в Dockerfile?

«Для чего нужна инструкция ADD в Dockerfile?» — вопрос из категории DevOps, который задают на 26% собеседований Data Scientist / ML Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Инструкция ADD в Dockerfile копирует файлы, директории или удаленные ресурсы из контекста сборки или из сети внутрь образа. Её ключевые особенности:

  • Распаковка архивов: Автоматически распаковывает локальные .tar, .tar.gz, .tar.bz2, .tar.xz и .zip архивы при копировании.
  • Загрузка по URL: Может скачивать файлы из сети напрямую в образ.

Пример использования:

# Копирует и распаковывает архив в целевую директорию
ADD application.tar.gz /usr/src/app/

# Скачивает файл по URL в временную директорию
ADD https://example.com/config.yaml /tmp/config.yaml

Основное отличие от COPY: COPY — это более простая и предсказуемая инструкция, которая только копирует локальные файлы и директории. ADD обладает расширенной функциональностью, но её поведение с архивами может быть неочевидным.

Лучшие практики: Используйте COPY для обычного копирования файлов. Применяйте ADD только в специфичных случаях, когда нужна распаковка архивов или загрузка из сети.