Ответ
Инструкция ADD в Dockerfile копирует файлы, директории или удалённые файлы (по URL) из контекста сборки или из сети внутрь образа контейнера. Её ключевая особенность — автоматическая распаковка локальных архивов (.tar, .tar.gz, .tar.xz, .tar.bz2).
Когда я её использую:
- Для добавления и распаковки архивов: Например, когда нужно добавить в образ предварительно собранный дистрибутив приложения.
ADD ./application.tar.gz /opt/myapp/ # Содержимое архива будет автоматически распаковано в /opt/myapp/ - Для загрузки файлов из интернета: Хотя это возможно, на практике я предпочитаю использовать
RUNсwgetилиcurlдля лучшего контроля над кэшированием слоёв и обработкой ошибок.ADD https://example.com/some-package.tar.gz /tmp/ # Файл будет скачан, но НЕ распакован, если это удалённый URL.
Важное замечание: В большинстве случаев для простого копирования локальных файлов предпочтительнее использовать COPY, так как оно более предсказуемо и прозрачно. ADD со своей «магией» распаковки может привести к неочевидному поведению и увеличению размера образа, если это не требуется.