Инструкция Dockerfile COPY


Инструкция Dockerfile COPY позволяет на этапе сборки контейнера скопировать в него с локальной машины любые файлы. Чаще всего это файлы приложения, конфигурационные файлы, скрипты, статическое содержимое: файлы стилей, изображения.



В Dockerfile определяется рабочий каталог контейнера.

WORKDIR /usr/app

Он нужен чтобы случайно не перезаписать стандартные для контейнера файлы в корне своими.



Любая сборка осуществляется из какого-то образа, он может предполагать наличие файлов в корне.


С WORKDIR файлы приложения будут отправляться не в корень, а в указанный каталог.

Каталог создается автоматически на этапе сборки.



Копирование затем выполняется инструкцией COPY с указанием каталога на хосте и каталога в контейнере.

COPY ./ ./

При копировании можно изменять пользователя и права доступа передавая нужные значения с помощью флагов chown и chmod. Флаги опциональны.


Пример копирования файлов в контейнер при сборке со сменой владельца и прав доступа:

COPY --chmod=644 --chown=55:mygroup files* /somedir/


На файлы, скопированные в каталог somedir, будут выставлены права 644, разрешающие владельцу читать и редактировать файлы, группе владельца и остальным пользователям только читать. Для файлов установится владелец 55 и группа mygroup.


Пример взят из блока про инструкцию COPY официальной документации Docker


Dockerfile COPY



Готовый Dockerfile с инструкцией COPY можно посмотреть по ссылке.

В материале приводятся настройки для сборки в 2 этапа, на первом за счет COPY копируются файлы в промежуточный контейнер. На втором за счет той же инструкции копируются файлы из промежуточного контейнера в контейнер используемый в production.

В этом случае появляется дополнительный флаг --from=builder



При сборке контейнеров всегда рекомендуется использовать тэги

docker build -t name/project .

Сказать спасибо