Answers:
COPY README.md package.json gulpfile.js __BUILD_NUMBER ./
要么
COPY ["__BUILD_NUMBER", "README.md", "gulpfile", "another_file", "./"]
您还可以在源文件规范中使用通配符。有关更多细节,请参阅文档。
目录很特别!如果你写
COPY dir1 dir2 ./
实际上就像
COPY dir1/* dir2/* ./
如果要通过单个命令在目标目录下复制多个目录(而不是目录的内容),则需要设置构建上下文,以使源目录位于一个公共父目录下,然后位于该父目录下COPY
。
tar
存档,并添加ADD。
COPY <all> <the> <things> <last-arg-is-destination>
但是,这是文档的重要摘录:
如果您有多个使用不同上下文的文件的Dockerfile步骤,请单独复制而不是一次全部复制。这样可以确保仅在特别需要的文件发生更改时,才使每个步骤的构建缓存无效(强制重新运行该步骤)。
https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#add-or-copy
简单
COPY README.md package.json gulpfile.js __BUILD_NUMBER ./
从文档
如果直接或由于使用通配符而指定了多个资源,则该资源必须是目录,并且必须以斜杠/结尾。
这可能是值得一提的是,你还可以创建一个.dockerignore
文件,以排除文件,您不希望复制:
https://docs.docker.com/engine/reference/builder/#dockerignore-file
在Docker CLI将上下文发送到Docker守护程序之前,它将在上下文的根目录中查找名为.dockerignore的文件。如果此文件存在,则CLI会修改上下文以排除与其中的模式匹配的文件和目录。这有助于避免不必要地将较大或敏感的文件和目录发送到守护程序,并避免使用ADD或COPY将它们添加到映像中。