在docker化的开发环境中,“构build神器”是什么意思?

在一篇关于创builddockerized开发环境的博客文章中 ,有一个部分给出了以下问题和第一段答案:

你想要什么types的构build工件?

在这个例子中我想要的构build工件是一个正在运行的容器。 编写或者docker工具将是适当的工具。 在您的场景中,您可能更喜欢拥有可分发的映像,或者您可能更喜欢构build在您的主机操作系统上生成二进制文件。

我在另外一个问题上读到,一个工件可以在一个过程中创build。 从阅读到其他答案,似乎使用该术语的上下文是重要的。

在使用Docker创build开发环境的背景下, 构build工件是什么意思?

总之我会说: Environment + Compiled output = Artifact

也就是说, 完整的环境,包括所有的工具,依赖关系等需要build立源( 图像 ),+实际构build/编译的结果( runnables / libs ,后者存储在前者!

这样,如果发生崩溃/错误,一切都在您身边,无论您的软件出现多less旧版本,都可以随时debugging。 *

*:我没有在上面的描述中包含源代码,但是这也可能是优选的。 否则,因为我们都使用版本控制,所以必要时可以安装。

神器vs图片:

(来自评论的注释)

“神器”仅仅是产生的东西的一个词, 在这种情况下,开发软件的副产品。 所以runnables / libs是编译源代码时产生的神器,图像是整个“build”步骤产生的神器,基本上是一个包含一个或多个其他神器的神器!

当您开始使用自动构build,testing和部署pipe道(AKA 持续交付 )时,这样做更有意义。


注1:

这将是最终的结果,因此你如何select设置任何步骤,直到这一点取决于你( 拆分图像方法等)。

笔记2:

我刚刚开始与docker工人一起玩连续交付,所以这些只是我最初的两分钱:)

就构buildstream水线而言,Artifact是构build期间生成的软件组件,存储在存储库中并最终部署到不同的环境中。

对于非docker化的Java应用程序,这通常是JAR / WAR。 对于dockerized应用程序,这通常是一个包含JAR / WAR的映像。