Как скопировать файлы и директории в Docker-образ

«Как скопировать файлы и директории в Docker-образ» — вопрос из категории Devops, который задают на 10% собеседований Python Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для копирования локальных файлов и директорий в Docker-образ используются инструкции `COPY` и `ADD` в `Dockerfile`. Инструкция `COPY` является предпочтительной в большинстве случаев из-за своей предсказуемости и прозрачности. **Пример с `COPY`:** ```dockerfile # Указываем базовый образ FROM python:3.9-slim # Устанавливаем рабочую директорию внутри контейнера WORKDIR /app # Копируем содержимое локальной директории ./src # в рабочую директорию /app контейнера COPY ./src /app # Копируем отдельный файл COPY requirements.txt . CMD ["python", "main.py"] ``` ### Разница между `COPY` и `ADD` | Инструкция | Возможности | | :--- | :--- | | **`COPY`** | Копирует файлы и директории из контекста сборки в файловую систему образа. | | **`ADD`** | Делает то же, что и `COPY`, но дополнительно умеет:
  • Скачивать файлы по URL.
  • Автоматически распаковывать локальные `.tar` архивы.
| **Рекомендация (Best Practice):** Используйте `COPY` по умолчанию. Он более предсказуем. Применяйте `ADD` только тогда, когда вам действительно нужна его дополнительная функциональность (например, автоматическая распаковка архива).