我正在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在這種情況下會失敗的原因,但是當所有必要的文件都存在於構建上下文中時,它會讓我困惑爲什麼失敗。 –