Ответ
Инструкция COPY — это основной и рекомендуемый способ добавления локальных файлов и директорий из контекста сборки (папки на хосте) в образ Docker. Она простая и предсказуемая.
Для чего я её применяю:
- Копирование исходного кода приложения в образ для сборки или запуска.
- Добавление конфигурационных файлов (например,
nginx.conf,appsettings.json). - Копирование скриптов инициализации или зависимостей.
Пример из практики:
# Копируем файл с зависимостями Python
COPY requirements.txt /tmp/requirements.txt
# Устанавливаем зависимости (этот слой кэшируется отдельно от кода)
RUN pip install -r /tmp/requirements.txt
# Копируем весь исходный код приложения в рабочую директорию
WORKDIR /app
COPY . .
# Копируем отдельный конфиг, перезаписывая дефолтный
COPY ./config/production.cfg /etc/app/config.cfg
Ключевые отличия от ADD:
COPYне распаковывает архивы автоматически.COPYне поддерживает загрузку файлов по URL.- Это делает поведение
COPYявным и понятным, что соответствует принципам написания чистых и поддерживаемых Dockerfile.