如何处理在Docker容器中使用`git ls-files`的gemspecs?

这是问题:

我有几个gem回购叉分支进行更改,并作为子模块添加到vendor 。 通常我会在Gemfile指定这些依赖关系, Gemfile所示:

 gem 'whatever', path: './vendor/whatever' 

这在我的本地机器上工作正常,但.git目录不复制到Docker容器,因为这会增加荒谬的膨胀,包括应用程序和每个供应商的部署的完整修订历史logging 。 看来容器应该只包含他们运行的应用程序版本的代码。 他们已经够胖了。

但是,当我尝试在Docker容器bundle install构build应用程序时, bundle install失败,因为.git目录不存在,导致git ls-files呕吐:

 fatal: Not a git repository (or any of the parent directories): .git 

我怎样才能解决这个问题, 而无需将.git目录添加到容器

当我在Gemfile使用源代码的path ,我甚至需要文件列表是否正确?

现在我只是检查如果./.git存在,并设置spec.files = []如果不存在。 这似乎工作到目前为止,但不知道如果/当它会咬我。

我考虑过的其他方法:

  1. Glob for .gitignore文件,parsing模式并针对目录中的文件进行过滤。

    • 我已经找遍了图书馆来做这件事,但是还没有find任何东西,而且很难花时间编写和debugging我现在的日程安排。
    • 另外,我认为在Git跟踪的文件匹配忽略模式(强制添加或在忽略模式之前添加)的情况下,这会产生不正确的结果。
  2. 在docker docker build之前在主机上生成一个文件清单,如果缺less./.git,gemspec会查找该文件。

    • 虽然增加了复杂性,但似乎远低于(1)和模式。

其他人怎么解决这个问题呢? 任何额外的想法?

提前致谢。