什么"构建工件"在dockerized开发环境的背景下意味着什么?

时间:2017-02-27 07:02:43

标签: docker build developer-tools

在关于创建码头化开发环境的blog post中,有一个部分提供了以下问题和第一段答案:

  

您想要什么类型的构建工件?

     

此示例中我想要的构建工件是一个正在运行的容器。   Compose或docker都是适合的工具   结束。在您的方案中,您可能更喜欢具有可分发的图像,   或者您可能更喜欢构建在主机上生成二进制文件   操作系统。

我在another question中读到工件可以是在流程中创建的任何内容。从阅读到其他答案,似乎使用该术语的上下文非常重要。

在使用Docker创建开发环境的上下文中,构建工件意味着什么?

2 个答案:

答案 0 :(得分:9)

简而言之我说:Environment + Compiled output = Artifact

完整环境,包括构建源(图像)所需的所有工具,依赖项等,+实际构建/编译结果( runnables / libs < / strong>),后者存储在前者内部!

这样一来,在发生崩溃/错误的情况下,一切都在那里,无论什么时候尘土飞扬,都可以调试。发生问题的旧版软件。 *

*:我在上面的描述中没有包含来源,但这也可能更合适。否则,由于我们都使用版本控制,因此可以在必要时安装它。

神器与图像:

(来自评论的注释)

&#34;工件&#34;只是生成某事的词;在这种情况下,开发软件时的副产品。因此runnables / libs是编译源代码时产生的工件,而图像是整个&#34; build&#34; -step产生的工件,基本上包含一个或多个其他工件的工件( s)!

当您开始使用自动构建,测试和放大时,这会更有意义。部署管道(AKA Continuous Delivery)。

注1:

这将是最终结果,因此您选择设置任何步骤直到此为止(split-image approach等)。

注2:

我刚刚开始玩码头与连续发货一起玩,所以这些只是我最初的两分钱:))

答案 1 :(得分:1)

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

对于非dockerized Java应用程序,这通常是JAR / WAR。 对于dockerized应用程序,这通常是包含JAR / WAR的图像。