当前位置: 首页 > 面试题库 >

如何在Docker的构建上下文之外包含文件?

令狐烨烨
2023-03-14
问题内容

如何使用Docker文件中的“ ADD”命令从Docker构建上下文之外包含文件?

从Docker文档中:

路径必须在构建上下文内;您不能添加../something/something,因为Docker构建的第一步是将上下文目录(和子目录)发送到docker守护程序。

我不想为了适应Docker而重组我的整个项目。我想将所有Docker文件保留在同一子目录中。

此外,似乎Docker尚未(可能从未)支持符号链接:Dockerfile
ADD命令未遵循主机#1676上的符号链接。

我唯一能想到的就是包括一个预构建步骤,将文件复制到Docker构建上下文中(并配置我的版本控制以忽略这些文件)。有没有比这更好的解决方法了?


问题答案:

解决此问题的最佳方法是使用-f独立于构建上下文指定Dockerfile。

例如,此命令将使ADD命令可以访问您当前目录中的任何内容。

docker build -f docker-files/Dockerfile .

更新
:Docker现在允许将Dockerfile置于构建上下文之外(已在18.03.0-ce,https:
//github.com/docker/cli/pull/886中修复)。所以你也可以做类似的事情

docker build -f ../Dockerfile .


 类似资料:
  • 路径必须在生成的上下文中;您不能添加../something/something,因为docker构建的第一步是将上下文目录(和子目录)发送到docker守护进程。 我不想重组我的整个项目只是为了在这件事上容纳Docker。我想把我所有的Docker文件都保存在同一个子目录中。 此外,Docker似乎还不支持(可能永远也不支持)符号链接:Dockerfile ADD命令不跟随主机#1676上的符号

  • 这基本上是关于如何包含Docker构建上下文之外的文件的后续问题:我在我所有的项目中都使用了大文件(几GB),这些文件保存在一个外部驱动器上,仅用于开发。 我想在构建docker容器时或

  • 问题内容: 我想在某种类型的全局项目目录中有一个模块,以便可以在使用该通用代码的所有其他项目中包含该模块。 但是,我怎样才能告诉Maven父母包括并编译这个全局共享模块呢?以下内容不起作用: 父pom.xml: 结果是: 问题答案: 如果您在该全局项目上运行,它将被安装在本地存储库中。然后,其他项目可以将其引用为依赖项: 这种简单化方法的缺点是,其他项目只有在检出并运行后才能编译。 一种更高级的方

  • 问题内容: 我正在使用LiteIDE for Go。我的Go文件位于此处: 当我使用以下文件添加文件时: 导入“ ../Helper” 我收到此错误: 无法加载软件包:/Users/username/go/src/src/projectA/main.go:4:8:非本地软件包中的本地导入“ ../Helper” 有什么想法我做错了吗? 问题答案: 您通过导入路径导入软件包。对于位于中的packag

  • 问题内容: 另一个Docker符号链接问题。我有一堆文件要复制到我的所有Docker构建中。我的目录结构是: 在上面的示例中,当我在dir1中进行docker构建时,我希望将file.txt复制过来。但是我不想维护file.txt的多个副本。每此链接,作为搬运工版本0.10,码头工人的作品必须 按照容器根目录内的符号链接获取ADD构建说明。 但是当我在Dockerfile中使用以下任一行进行构建时

  • 这样才是真的。 如果构建过程压缩了当前目录内容并将其发送到守护进程,那么它会去哪里呢?为什么不让这些内容在图像中使用呢?