开发者工具 · Docker run 到 Docker compose 转换器
Compose 文件中的版本键已过时:替换它的是什么
· 背景
码头工人 撰写 配置
多年来,每个 Compose 文件都以版本:“3”开头。这篇文章解释了用于选择的数字、Compose 规范删除它的原因以及如何处理您拥有的文件。
每个命令都会出现新警告 - 对于多年来未更改的文件,“版本已过时”
每个命令都会出现新警告 - 对于多年来未更改的文件,“版本已过时”。证据:作者从服务开始,测试拒绝顶级版本密钥。使用一次性文字重现版本密钥删除。将每个源事件与无版本服务输出配对;保留旧版兼容性以供目的地审核。
配置事件还揭示了一个单独的配置事件边界是支持的结果是一个无版本的受限文档。证据:支持的结果是一份无版本的有限文档。此版本密钥删除约束是一个停止点。在没有制造行为的情况下检查无版本服务输出,然后记录主机检查的遗留兼容性。
该存储库验证版本的省略,而不是历史引擎格式兼容性表
什么版本:选择 — 文件格式 1、2.x 或 3.x,每个都与最小 Docker 引擎和一组允许的密钥相关联。证据:此存储库中不存在引擎到格式的兼容性表;该存储库验证版本的省略,而不是历史引擎与格式的兼容性表。将版本密钥删除令牌跟踪到无版本服务输出中。将有序值与最后值字段分开;遗留兼容性不在集合范围内。
相关的配置机制边界是,对于该配置节,在该候选文件旁边保留该配置节的原始命令和该配置节的警告。证据:存储库没有提供更广泛的运行时间或历史证据。使用此版本键删除事实来预测无版本服务输出中的一个成员或标量。在决定有关旧版兼容性的任何事情之前检查警告。
该代码没有确定为什么早期格式分支会出现分歧,因此它记录了当前生成的密钥
为什么 2 和 3 存在分歧 — 3 中面向群体的密钥、2 中的资源限制以及由此造成的混乱。证据:历史背离不能由转换器的实现来解释;该代码没有确定为什么早期格式分支会出现分歧,因此它记录了当前生成的密钥。从其模型中判断版本键删除序列化。在无版本服务输出中引用可以保护类型,但不能提供旧版兼容性的操作证明。
第二个配置序列化观察是为此配置节保留该配置节的原始命令,并警告除了该配置节之外,配置序列化结果将该配置节表示的候选文件与该配置节图像元数据的缺失上下文分开表示在配置序列化转换之外。此版本密钥删除输出将设置与不可用的上下文分开。保持无版本服务输出可审查并独立检查遗留兼容性。
规范的答案 - 一个模式,没有版本字段,而是由 Compose 实现控制的功能
规范的答案 - 一个模式,没有版本字段,而是由 Compose 实现控制的功能。在版本键删除异常处停止而不是猜测。任何接近无版本服务输出的添加都需要与遗留兼容性相关的特定于部署的原因。
另一个配置异常约束是单独的配置异常边界是旧版 Python 和 Swarm 语义需要版本化引用。证据:遗留的 Python 和 Swarm 语义需要版本化引用。将原始版本密钥删除命令保留在警告旁边。该比较显示了无版本服务输出包含哪些内容以及哪些遗留兼容性决策仍然是手动的。
如何处理旧文件 - 删除密钥、检查仅 v2 或仅 v3 的密钥以及运行 docker compose config
如何处理旧文件 - 删除密钥、检查仅 v2 或仅 v3 的密钥以及运行 docker compose config。证据:删除版本无法验证每个剩余的旧密钥。从合成名称构建版本密钥删除示例。使每个无版本服务输出项都可追溯,而不会暴露生产遗留兼容性详细信息。
相同的配置示例示例表明,单独的配置示例边界是新的输出适合服务而不声明通用兼容性。证据:新的输出适合服务,但不要求通用兼容性。配对版本密钥删除事实应该在无版本服务输出中可见。记录该行并避免有关旧版兼容性的假设。
工作示例:在检查所有剩余密钥后仅删除版本行
工作示例:现代化版本:“2.1”文件 — 三个编辑以及前后差异。证据:现代化示例应在审查后仅删除该标记;工作示例:在检查所有剩余密钥后仅删除版本行。将版本密钥删除结果转换为一种可观察的无版本服务输出差异。 Docker 拥有后来的遗留兼容性裁决。
配置结果实现还显示,对于该配置节,保留该配置节命令的原始内容,并在该配置节旁边显示警告,该候选文件配置结果事实定义了浏览器为此配置节贡献的内容,docker 仍然拥有配置结果运行时判决,对于该配置节,操作员仍然拥有配置结果安全策略,对于该配置节存储库仍然需要删除配置结果秘密,对于描述生成服务的该配置节,保留这些责任。拆分版本密钥删除职责:转换写入无版本服务输出,存储库删除机密,操作员验证旧版兼容性。
旧版 Python 工具要求和 Swarm 部署行为不是从此转换器推断出来的
这不包括旧的 Python docker-compose v1,它仍然需要密钥和 Swarm 特定的部署设置。证据:遗留的 Python 和 Swarm 语义需要版本化引用;旧版 Python 工具要求和 Swarm 部署行为不是从此转换器推断出来的。将版本密钥删除范围限制为此处显示的无版本服务输出分支。相邻的表单和默认值无法回答旧版兼容性问题。
保留此配置节的原始命令以及此候选文件旁边的警告后,又出现了一个配置范围限制。将此版本密钥删除边界视为排除项。更喜欢准确的无版本服务输出,而不是对遗留兼容性的猜测。
要点:文件格式具有一种当前形状 - 并且新转换的服务定义适合服务:没有版本行
要点:文件格式具有一种当前形状 - 并且新转换的服务定义适合服务:没有版本行。审计版本密钥删除作为源选项、模型字段、无版本服务输出行和警告。在检查旧版兼容性之前删除机密。
最后,配置要点来源确认了一个单独的配置决策边界,即历史分歧不能由转换器实现来解释。证据:转换器的实现无法解释历史差异。严格关闭版本密钥删除:无版本服务输出是候选者;不保证旧版兼容性和 shell 等效性。