我正在Dockerizing一个应用程序,它涉及通过Clang将二进制文件与其他C文件链接起来。我们保留了二进制文件的符号链接版本,因为它们在整个代码库中都被使用。我的Docker构建目录包含这整个代码库(包括源文件以及这些源文件的符号链接),当我执行诸如cat [symlinked_file]
(即正确编辑文件为cat
)时,Docker会识别这些文件。然而,当我在我的Makefile中运行我的Clang命令时,它无法链接符号链接的文件(这些工作很好,不在Docker中)。然后,我将原始文件复制到符号链接所在的目录中,替换符号链接,并且Docker在构建时不会发生任何错误。Docker不会遵循构建目录中的符号链接
有谁知道如何解决这个问题?我需要在这里给Docker或Clang一些特殊的命令吗?我不知道为什么Clang在Docker容器内的行为不同于外部。我从Ubuntu 16.04基础映像运行以供参考。
当时构建上下文目录中的符号链接_target_,或在文件系统上的另一个文件夹? – BMitch
是的。 Dockerfile所在的顶层目录'dir'包含子目录'dir1'和'dir2'。符号链接的文件以及目标位于'dir1'中。我发现了关于构建上下文以外的文件的其他问题,并且我可以理解Docker在这种情况下会失败的原因,但是当所有必要的文件都存在于构建上下文中时,它会让我困惑为什么失败。 –