Если у вас несколько источников, вы обязаны использовать форму ./
, в которой явно указывается, что целью является папка, в которую копируются все источники. Таким образом, COPY a b ./
сделает ./a
и ./b
внутри контейнера.
Если у вас один источник, например COPY . .
, эта команда объединяет содержимое папки источника в папку назначения или заменяет файл (если источником является файл).
Лучше всего показано на примере. Допустим, у вас есть:
a/
a.txt
b/
b.txt
Dockerfile
hello.txt
Dockerfile
COPY hello.txt ./hello1 # will create/replace ./hello1 FILE in container
COPY hello.txt ./hello2/ # will create ./hello2/hello.txt
COPY a . # now you have ./a.txt in container
COPY b . # now you have ./a.txt and ./b.txt in container
Наконец вы получите в контейнере:
hello1
hello2/hello.txt
a.txt
b.txt