Docker 什么是;“构建工件”;是指在固定化开发环境的上下文中?

Docker 什么是;“构建工件”;是指在固定化开发环境的上下文中?,docker,build,developer-tools,Docker,Build,Developer Tools,在关于创建停靠开发环境的文章中,有一节给出了以下问题和第一段答案: 您想要什么类型的构建工件? 在本例中,我想要的构建工件是一个正在运行的容器。 无论是Compose还是docker都是合适的工具 结束。在您的场景中,您可能更希望有一个可分发的映像, 或者,您可能更希望构建在主机上生成二进制文件 操作系统 我读到一个工件可以是在一个过程中创建的任何东西。从阅读其他答案来看,使用该术语的上下文似乎很重要 在使用创建开发环境的上下文中,构建工件意味着什么?简而言之,environment+Compi

在关于创建停靠开发环境的文章中,有一节给出了以下问题和第一段答案:

您想要什么类型的构建工件? 在本例中,我想要的构建工件是一个正在运行的容器。 无论是Compose还是docker都是合适的工具 结束。在您的场景中,您可能更希望有一个可分发的映像, 或者,您可能更希望构建在主机上生成二进制文件 操作系统

我读到一个工件可以是在一个过程中创建的任何东西。从阅读其他答案来看,使用该术语的上下文似乎很重要

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

简而言之,
environment+Compiled output=artifact
。 也就是说,完整的环境,包括构建源代码(image)所需的所有工具、依赖项等,以及实际构建/编译的结果(runnables/libs),后者存储在前者中

这样,在发生崩溃/错误的情况下,一切都在等待着你,无论你的软件出现了什么旧版本的问题,都可以随时进行调试*

*:我没有在上面的描述中包括来源,但这也可能是更好的。否则,因为我们都使用版本控制,所以如果需要,可以在以后安装它

工件与图像: (评论中的注释)

“人工制品”仅仅是指生产出来的东西;在这种情况下,开发软件时的副产品。因此,可运行文件/库是编译源代码时产生的工件,而映像是整个“构建”步骤产生的工件,基本上是包含一个或多个其他工件的工件

当您开始使用自动构建、测试和部署管道(AKA)时,这就更有意义了


注1:

这将是最终结果,因此您选择如何设置任何步骤,直到这一点取决于您(等等)

注2:


我最近刚刚开始使用docker,并将其与持续交付相结合,因此这只是我最初的两分钱:)

就构建管道而言,一般来说,工件是在构建过程中生成的软件组件,存储在存储库中,并最终部署到不同的环境中

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

@allingeek会喜欢你的想法的!谢谢你的两分钱:)那么,人工制品和图像有什么区别呢?你的定义听起来很像图像。在这种情况下,图像就是工件!:)“工件”仅仅是一个词,指的是生产出来的东西,在这个上下文中,它是开发软件时的副产品。因此,可运行文件/库是编译源代码时产生的工件,而映像是整个“构建”步骤产生的工件,基本上是包含一个或多个其他工件的工件!当您开始使用自动构建、测试和部署管道时,这就更有意义了。AKA@helmesjo我想在你的回答中加上这个例子,它让我更清楚:)@guival当然!更新了答案。如果它变得更(或更少)令人困惑,请告诉我……:)