【问题标题】:Why is my dockerfile not copying directories为什么我的 dockerfile 不复制目录
【发布时间】:2017-03-09 14:48:47
【问题描述】:

在我的 dockerfile 中有这两行:

ADD /ansible/inventory /etc/ansible/hosts
ADD /ansible/. /ansiblerepo

第一行有效,因为我可以运行容器并查看我的主机文件已填充了我的清单文件中的所有 ip。

但第二行似乎不起作用。我只是想复制 ansible 的所有文件/子目录并将它们复制到新容器内的 ansiblerepo 目录中。

在构建映像时没有错误,但是 ansiblerepo 只是一个空目录,没有任何内容复制到它。我想我只是缺少一个反斜杠或其他东西。

【问题讨论】:

  • 你是如何构建你的 docker 镜像的?命令行是什么?

标签: docker


【解决方案1】:

Docker ADDCOPY 命令直接与构建相关,并且仅适用于该目录中未被.dockerignore 文件排除的文件。原因是构建实际上是在 docker 主机上运行的,它可能是远程机器。 docker build . 的第一步是打包目录中的所有文件(在本例中为 .)并将它们发送到主机以运行您的构建。您提供的任何绝对路径都被解释为相对于构建目录,并且您引用的任何未发送到服务器的内容都将被解释为丢失的文件。

解决方案是将 /ansible 复制到您的构建目录(通常与您的 Dockerfile 相同的文件夹)。

【讨论】:

    【解决方案2】:

    从源目录中删除尾随 /. 应该会修复 ADD 命令。

    在相关说明中,如果您不需要 URL 下载功能,Docker Best Practices 建议使用 COPY 而不是 ADD

    【讨论】:

      【解决方案3】:

      确保在您的“.dockerignore”文件中没有排除所有内容。通常,dockerignore 文件这些行

      *
      !obj\Docker\publish\*
      !obj\Docker\empty\
      

      这意味着除了 publishempty 文件夹之外的所有内容都将被忽略。

      【讨论】:

        猜你喜欢
        • 2020-06-08
        • 2022-07-21
        • 1970-01-01
        • 2021-01-09
        • 1970-01-01
        • 2012-11-22
        • 2016-05-08
        • 2021-05-06
        • 1970-01-01
        相关资源
        最近更新 更多