在Docker中添加或复制文件夹

时间:2015-02-19 06:00:11

标签: docker

我的目录结构如下

 Dockerfile downloads

我想将下载内容添加到/ tmp

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

Nothings的作品。它将下载内容复制到tmp中。我想复制下载文件。有什么想法吗?

 ADD . tmp/

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

6 个答案:

答案 0 :(得分:22)

我相信你需要:

COPY downloads /tmp/downloads/

这会将downloads目录的内容复制到图像中名为/tmp/downloads/的目录中。

答案 1 :(得分:3)

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

从有关COPYADD的dockerfile参考中,它显示Note: The directory itself is not copied, just its contents.,因此您必须明确指定目录。

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

e.g。

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

COPY ./src    /some_dir/dest_dir/

答案 2 :(得分:1)

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

tar -zcf download.tar.gz download

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

ADD download.tar.gz tmp/

答案 3 :(得分:0)

您可以使用:

RUN mkdir /path/to/your/new/folder/
COPY /host/folder/* /path/to/your/new/folder/

虽然我只能通过一次COPY电话直接找到方法。

答案 4 :(得分:0)

对我来说最好的是:

COPY . /tmp/

在根目录中包含以下 .dockerignore 文件

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

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

答案 5 :(得分:-1)

如果您的文件夹未以/结尾,则会将其视为文件,因此如果您要复制文件夹,则应该写ADD /abc/ def/