docker-swarm - Twelve-Factor App 中的“发布”阶段对应的是什么?
问题描述
在 Docker Swarm 项目中, 12 因子应用的“发布”阶段对应的是什么?
据我了解,“docker build”对应于构建阶段,并且生成的图像不构成发布(因为它尚未与环境的配置相结合)。
以下是官方描述:
代码库通过三个阶段转换为(非开发)部署:
构建阶段是将代码仓库转换为可执行包的转换,称为构建。在部署过程指定的提交中使用代码版本,构建阶段获取供应商依赖项并编译二进制文件和资产。
发布阶段采用 构建阶段生成的构建并将其与部署的当前配置相结合。生成的版本包含构建和配置,并准备在执行环境中立即执行。
运行阶段(也称为“运行时”)在执行环境中运行应用程序,方法是针对选定的版本启动应用程序的一些进程集。
他们进一步澄清:
每个版本都应始终具有唯一的版本 ID,例如版本的时间戳(例如 2011-04-06-20:32:17)或递增的数字(例如 v100)。发布是一个只能追加的分类帐,发布一旦创建就不能改变。任何更改都必须创建一个新版本。
每当部署新代码时,应用程序的开发人员都会启动构建。相比之下,运行时执行可以在服务器重新启动或进程管理器重新启动崩溃的进程等情况下自动发生。因此,运行阶段应保持尽可能少的活动部件,因为阻止应用程序运行的问题可能会导致应用程序在没有开发人员在场的半夜中断。构建阶段可能更复杂,因为对于推动部署的开发人员来说,错误总是出现在前台。
解决方案
推荐阅读
- javascript - 如何重新定位tradingview图表,以免离开屏幕左侧
- terraform-provider-gcp - 如何在 GCP Cloud Shell 中升级到最新的 terraform 版本
- c++ - 相对于相机校准的平移和旋转坐标是什么?
- python - R:将json上的python字典解析为xts
- python - 奇怪的语法(Python/Pandas)
- reactjs - 类型“未定义”不能用作索引类型
- jmeter - 使用不同数量的用户在 JMeter 中执行负载测试
- arrays - 在 MongoDB 的嵌入式文档中搜索?
- angular - 如何在 Angular 应用程序中获取 Firebase Analytics 用户数据
- react-native - 使用深度链接时未获取 route.params