我应该编译我的应用程序里面的一个Docker镜像

尽pipe大多数时候我正在开发Java应用程序,并且只是简单地使用Maven,所以我的构build应该是可重复的(至lessMaven所说的)。

但是,如果你正在编译一个C ++程序或更复杂的东西,你应该build立在docker?
或者理想地使用stream浪者或其他技术来生产可复制的版本。

你如何pipe理docker重复生成?

你可以,但不是在你的最终形象,因为这将意味着一个更大的形象,而不是必要的:它将包括所有的编译工具,而不是仅限于你需要执行生成的二进制文件。

您可以在“ 如何在没有构build工具的情况下为Ruby项目构buildDocker镜像?

  • 我使用一个图像来build立,
  • 我将产生的停止的容器提交为一个新的映像(包含一个包含结果二进制文件的卷)
  • 我使用一个执行映像(一个只包含你需要运行的映像),并从另一个映像复制二进制文件。 我再次提交所产生的容器。

最终的图像包括编译的二进制文件和执行环境。

我想发布一个答案,其实是因为build立在VonC的答案上。 实际上,我刚刚进行了Redhat的Openshift培训,他们使用了一个名为Source to Image的工具s2i ,它使用docker来创builddocker镜像。 实际上,这个策略非常适合pipe理私有(或公共)云,您的构build可以在不同的机器上编译,但是您需要保持构build环境的一致性。