假设我想将 Docker 用于一个应用程序,它由两部分组成。这些部分不同,但它们有一些共享库。
所以,我有两个文件夹:
part1/
Dockerfile
src/
part2/
Dockerfile
src/
Run Code Online (Sandbox Code Playgroud)
但是,我希望他们共享一些文件(例如,库),因为 DRY。不幸的是,似乎没有任何好的目录结构可以让我这样做:Dockerfiles 不能引用父文件夹,我不能将它们都放在顶层文件夹中,因为我不允许更改Dockerfile 的名称。
有些文件需要在建筑物一步,所以我不能使用的“绑定安装卷”选项docker run-docker run为时已晚。
我看到这些选项,但我不喜欢它们:
我可以添加一个名为 的文件夹shared/,然后使用 hack 将其“放入”我的两个应用程序文件夹中。这些黑客包括以某种方式安装它(这很烦人,需要我每次都这样做,而且我试图出售 Docker 的同事无法解释)或在构建之前复制它(如果我将构建隐藏到构建中,则可行) -script,在构建之前复制文件夹并在构建之后立即删除它;但是,即使共享文件夹没有更改,它也会使构建缓存无效,并且容易出现错误)
我可以将项目拆分为 3 个不同的项目,并使用 git-sub-something 将它们链接在一起。这种配置很难使用(或者我不知道该怎么做)。
我认为我的情况并不少见,尤其是在座右铭“将应用程序解耦到多个容器中”的情况下。所以可能有很好的方法来处理它。有什么线索吗?