开发者工具 · Docker run 到 Docker compose 转换器
从 Fig 到 Compose v2:Docker Compose 文件的简短历史
· 背景
码头工人 撰写 配置
Compose 最初是一个名为 Fig 的第三方工具,在当前规范之前经历了多种文件格式。这篇文章追踪了一些里程碑,解释了您仍然在野外找到的文件。
一家公司中的三个外观不同的文件 - 一个无版本文件,一个版本:“2”,以及一个根本没有版本的 compose.yaml
一家公司中的三个外观不同的文件 — 一个无版本文件、一个版本:“2”以及一个根本没有版本的 compose.yaml。证据:外观不同的文件可能共存,但该存储库不提供时间顺序。使用一次性文字再现文件形状。将每个源事件与服务量网络配对;保留历史年表以供目的地审查。
配置事件还揭示了一个单独的配置事件边界是只有命名卷和自定义网络可以添加顶级部分。证据:只有命名卷和自定义网络可以添加顶级部分。该文件形状约束是一个停止点。检查没有制造行为的服务卷网络,然后记录主机检查的历史时间顺序。
存储库证据并未建立 Fig 的历史,因此本节解释当前解析器边界
图 — Orchard 项目引入了描述链接容器的 YAML 文件的想法。证据:无花果的获取和释放声明没有来自受检查的树;存储库证据并不能建立 Fig 的历史,因此本节解释当前解析器边界。将文件形状标记跟踪到服务卷网络中。将有序值与最后值字段分开;历史年表不在收藏范围内。
相关的配置机制边界是,对于该配置节,在该候选文件旁边保留该配置节的原始命令和该配置节的警告。证据:存储库没有提供更广泛的运行时间或历史证据。使用此文件形状事实来预测服务卷网络中的一个成员或标量。在决定有关历史年表的任何事情之前先检查警告。
此处没有获取或发布年表;将传统输入与当前输出进行比较
Docker Compose 1.0 — 获取和重命名,以及没有 services: key 的 v1 文件格式。证据:当前模型始终以服务和一个服务名称开头;此处没有获取或发布时间顺序;相反,将传统的输入与当前的输出进行比较。从其模型判断文件形状序列化。服务卷网络中的引用可以保护类型,但不能提供历史年表的操作证据。
第二个配置序列化观察是为此配置节保留该配置节的原始命令,并警告除了该配置节之外,配置序列化结果将表示该配置节的配置与该配置节图像元数据的缺失上下文分开的候选文件位于配置序列化转换之外。此文件形状输出将设置与不可用的上下文分开。保持服务量网络可审查并独立检查历史时间顺序。
生成器的可观察顶层模型是服务加上可选的卷和网络
格式 2 和 3 — 服务、网络和卷作为顶级密钥,然后是面向 Swarm 的部署:设置。证据:只有命名卷和自定义网络才能添加顶级部分;生成器的可观察顶层模型是服务加上可选的卷和网络。停在文件形状异常处而不是猜测。任何靠近服务量网络的添加都需要与历史时间顺序相关的特定于部署的原因。
另一个配置异常约束是,对于该配置节,在该候选文件旁边保留该配置节的原始命令和该配置节的警告。将原始文件形状命令保留在警告旁边。比较显示了网络包含哪些服务量以及哪些历史时间顺序决策仍然是手动的。
该实现发出无版本子集,但未声明完全符合 Compose 规范
Compose 规范 — 将格式合并到一个开放维护的模式中。证据:无版本输出并不能建立完全的规范合规性;该实现发出无版本子集,但不声明完全符合 Compose 规范。从合成名称构建文件形状示例。使每个服务卷网络项目可追溯,而不会暴露生产历史时间顺序详细信息。
相同的配置示例示例表明,对于此配置节,请在该候选文件旁边保留此配置节的原始命令和此配置节的警告。配对的文件形状事实应该在服务卷网络中可见。记录下这句话并避免对历史年表的假设。
Compose 实现历史记录位于存储库证据之外;输出行为是受支持的主题
Compose v2 — 在 Go 中重写为 docker CLI 插件,以及 Python docker-compose 的结束。证据:当前版本的遗漏是可以观察到的,而里程碑则不是; Compose 实施历史记录位于存储库证据之外;输出行为是受支持的主题。将文件形状结果转换为一种可观察的服务量网络差异。 Docker拥有后来的历史年表裁决。
配置结果实现还显示,对于该配置节,保留该配置节的原始命令和警告,对于该配置节,该候选文件配置结果事实定义了浏览器为此配置节贡献的内容,docker 仍然拥有配置结果运行时判决,对于该配置节,操作员仍然拥有配置结果安全策略,对于该配置节存储库仍然需要删除配置结果秘密,对于该配置节,在描述生成服务的配置节时,保留这些责任。拆分文件形状职责:转换写入服务卷网络,存储库删除机密,操作员验证历史年表。
这不包括什么 - Swarm 模式、Kubernetes 清单和其他编排格式
这不包括 Swarm 模式、Kubernetes 清单和其他编排格式。证据:Swarm Kubernetes 和备用协调器位于源之外。将文件形状范围限制为此处显示的服务卷网络分支。相邻的形式和默认值无法回答历史年代问题。
另一个配置范围限制来自一个单独的配置限制边界,即 Fig 获取和发布声明在检查树中没有来源。证据:无花果的获取和释放声明在所检查的树中没有来源。将此文件形状边界视为排除项。更喜欢准确的服务量网络而不是对历史年表的猜测。
要点:您今天编写的文件遵循规范 - 并且转换器为您提供一个服务定义以放入该形状的文件中
要点:您今天编写的文件遵循规范 - 并且转换器为您提供一个服务定义以放入该形状的文件中。证据:无需制定时间表即可记录当前行为。审核文件形状作为源选项、模型字段、服务卷网络线和警告。在检查历史年表之前删除秘密。
最后,配置要点来源确认了一个单独的配置决策边界是当前模型始终以服务和一个服务名称开头。证据:当前模型始终以服务和一个服务名称开头。缩小文件形状:服务卷网络是候选者;历史年表和 shell 等效性并不能保证。