【问题标题】:ADD or COPY a folder in Docker在 Docker 中添加或复制文件夹
【发布时间】:2015-02-19 06:00:11
【问题描述】:

我的目录结构如下

 Dockerfile downloads

我想将下载添加到 /tmp

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

没有任何作用。它将下载的内容复制到 tmp 中。我想复制下载内容。有什么想法吗?

 ADD . tmp/

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

【问题讨论】:

    标签: docker


    【解决方案1】:

    我相信你需要:

    COPY downloads/ /tmp/downloads/
    

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

    【讨论】:

    • 能否请您详细说明您的答案,添加更多关于您提供的解决方案的描述?
    【解决方案2】:

    注意:目录本身并没有被复制,只是它的内容

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

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

    例如

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

    COPY ./src    /some_dir/dest_dir/
    

    【讨论】:

      【解决方案3】:

      你可以使用:

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

      我无法找到一种方法来直接通过一个COPY 调用来完成。

      【讨论】:

        【解决方案4】:

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

        tar -zcf download.tar.gz download
        

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

        ADD download.tar.gz tmp/
        

        【讨论】:

          【解决方案5】:

          对我来说最好的是:

          COPY . /tmp/
          

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

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

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

          【讨论】:

            【解决方案6】:

            如果你的文件夹不是以/结尾的,它被认为是一个文件,所以如果你想复制一个文件夹,你应该写ADD /abc/ def/

            【讨论】:

            • 不行,这行不通。 ADD downloads/ /mnt/ 但是它将下载的内容添加到/mnt/中。
            • 您的文件夹源和目标都必须以 / 结尾,您尝试复制 Dockerfile 也表明这是正确的。
            • 离开 Dockerfile。我只是评论了我尝试过的内容。它也不起作用
            • 我相信这行得通COPY download/ /tmp/让我知道
            • 刚试过COPY src/ /app/,src 的内容被复制了。这是 docker 版本 17.03.1-ce
            猜你喜欢
            • 2017-12-10
            • 1970-01-01
            • 2015-08-19
            • 1970-01-01
            • 1970-01-01
            • 2016-12-15
            • 2016-02-28
            • 2012-07-12
            • 1970-01-01
            相关资源
            最近更新 更多