Изучение различных методов копирования определенных файлов в Dockerfile

При работе с Docker файл Dockerfile является важным инструментом для определения инструкций по созданию образа Docker. Одной из распространенных задач при разработке Dockerfile является копирование определенных файлов или каталогов в образ. В этой записи блога мы рассмотрим несколько способов достижения этой цели, а также приведем примеры кода.

Метод 1: использование инструкции COPY
Самый простой способ копирования файлов в Dockerfile — использование инструкции COPY. Эта инструкция принимает два аргумента: исходный путь (относительно контекста сборки) и путь назначения внутри образа.

COPY source_path destination_path

Пример:
Предположим, у вас есть каталог с именем «app» и файл с именем «index.html», который вы хотите скопировать в корневой каталог вашего образа. Этого можно добиться, используя следующую инструкцию в вашем Dockerfile:

COPY app/index.html /

Метод 2: копирование нескольких файлов или каталогов
Чтобы скопировать несколько файлов или каталогов, вы можете использовать подстановочные знаки (*) в исходном пути. Это позволяет копировать несколько файлов или каталогов, соответствующих определенному шаблону.

COPY source_path/* destination_path

Пример:
Предположим, у вас есть несколько файлов JavaScript (script1.js, script2.js, script3.js) в каталоге с именем «scripts», которые вы хотите скопировать в каталог «app» внутри вашего изображения. Этого можно добиться, используя следующую инструкцию в вашем Dockerfile:

COPY scripts/* /app/

Метод 3: использование инструкции ADD
Инструкция ADD аналогична инструкции COPY, но имеет некоторые дополнительные функции. Он может выполнять автоматическое извлечение файлов tar и поддержку удаленных URL-адресов.

ADD source_path destination_path

Пример:
Предположим, у вас есть tar-файл с именем «data.tar.gz», который вы хотите скопировать и извлечь в каталог с именем «data» внутри вашего образа. Этого можно добиться, используя следующую инструкцию в вашем Dockerfile:

ADD data.tar.gz /data/

Метод 4: использование файла.dockerignore
Если вы хотите исключить копирование определенных файлов или каталогов в образ, вы можете использовать файл.dockerignore. Этот файл работает аналогично.gitignore и позволяет указать шаблоны для файлов или каталогов, которые следует игнорировать в процессе сборки.

Пример файла.dockerignore:

# Ignore all files with .txt extension
*.txt
# Ignore the "temp" directory
temp/

В этой записи блога мы рассмотрели различные методы копирования определенных файлов или каталогов в Dockerfile. Мы рассмотрели часто используемую инструкцию COPY, копирование нескольких файлов с использованием подстановочных знаков, использование инструкции ADD для дополнительных функций и использование файла.dockerignore для исключения определенных файлов или каталогов. С помощью этих методов вы можете легко управлять копированием файлов в процессе создания образа Docker.