在Docker中添加或复制文件夹

Gib*_*bbs 17 docker

我的目录结构如下

 Dockerfile downloads
Run Code Online (Sandbox Code Playgroud)

我想将下载添加到/ tmp

 ADD downloads /tmp/
 COPY down* /tmp
 ADD ./downloads /tmp
Run Code Online (Sandbox Code Playgroud)

没有任何作品.它将下载内容复制到tmp中.我想复制下载文件.任何的想法?

 ADD . tmp/
Run Code Online (Sandbox Code Playgroud)

复制Dockerfile也.我不想将Dockerfile复制到tmp /

小智 26

我相信你需要:

COPY downloads /tmp/downloads/
Run Code Online (Sandbox Code Playgroud)

这会将downloads目录的内容复制到/tmp/downloads/映像中调用的目录中.

  • 您能否详细说明您的答案,并添加有关您提供的解决方案的更多描述? (2认同)

Zel*_*ahl 10

您可以使用:

RUN mkdir /path/to/your/new/folder/
COPY /host/folder/* /path/to/your/new/folder/
Run Code Online (Sandbox Code Playgroud)

不过,我找不到一种方法可以直接通过一个COPY电话来完成。

  • 使用“mkdir”的“-p”参数更新此答案,它可以让您创建嵌套文件夹。“COPY”没有创建我需要的嵌套文件夹是我的问题,这个答案有最好的解决方案。 (3认同)

ROY*_*ROY 8

注意:目录本身不会被复制,只是其内容

从关于COPY和的dockerfile参考中ADD,它说Note: The directory itself is not copied, just its contents.,因此您必须显式指定一个dest目录。

RE:https : //docs.docker.com/engine/reference/builder/#copy

例如

src目录的内容复制到/some_dir/dest_dir目录。

COPY ./src    /some_dir/dest_dir/
Run Code Online (Sandbox Code Playgroud)


rom*_*408 6

对我来说最好的是:

COPY . /tmp/
Run Code Online (Sandbox Code Playgroud)

在根目录中使用以下.dockerignore文件

Dockerfile
.dockerignore
# Other files you don't want to copy
Run Code Online (Sandbox Code Playgroud)

如果容器中有许多需要的文件夹和文件,但不需要的文件不多,则此解决方案非常有用。否则user2807690' 的解决方案更好。


use*_*097 -3

如果您的文件夹不以 a 结尾,则它被视为文件,因此如果您想复制文件夹,/则应该执行类似 write 的操作。ADD /abc/ def/

  • 不,伙计,这不起作用。`ADD downloads/ /mnt/` 但它会将下载的内容添加到 /mnt/ 中。 (2认同)