在 Docker 中添加或复制文件夹

问题描述 投票:0回答:7

我的目录结构如下

 Dockerfile downloads

我想将下载添加到/tmp

 ADD downloads /tmp/
 COPY down* /tmp
 ADD ./downloads /tmp

什么都不起作用。它将下载的内容复制到 tmp 中。我想复制下载文件夹。有什么想法吗?

 ADD . tmp/

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

docker
7个回答
85
投票

我相信你需要:

COPY downloads/ /tmp/downloads/

这会将下载目录的内容复制到图像中名为

/tmp/downloads/
的目录中。


64
投票

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

从关于

COPY
ADD
的 dockerfile 参考中,它说
Note: The directory itself is not copied, just its contents.
,所以你必须明确指定一个目标目录。

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

例如

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

COPY ./src    /some_dir/dest_dir/

24
投票

您可以使用:

RUN mkdir -p /path/to/your/new/folder/
COPY /host/folder/ /path/to/your/new/folder/

我找不到一种方法可以直接通过一个

COPY
调用来做到这一点。


6
投票

对我来说最好的是:

COPY . /tmp/

根目录下有以下 .dockerignore 文件

Dockerfile
.dockerignore
# Other files you don't want to copy

如果您在容器中有许多需要的文件夹和文件,而没有太多不需要的文件,则此解决方案很好。 否则user2807690'解决方案更好。


3
投票

首先将要添加为单个存档文件的目录压缩:

tar -zcf download.tar.gz download

然后在Dockerfile中添加归档文件:

ADD download.tar.gz tmp/

0
投票

从 Dockerfile 参考复制:

尚未提供稳定语法,请使用 docker/dockerfile:1.7-labs 版本。

COPY [--parents[=<boolean>]] <src> ... <dest>

--parents 标志保留 src 条目的父目录。这 标志默认为 false。


-3
投票

如果您的文件夹不以

/
结尾,则它被视为文件,因此如果您想复制文件夹,您应该写
ADD /abc/ def/

© www.soinside.com 2019 - 2024. All rights reserved.