YAML版本1和YAML版本2有什么区别?

我第一次使用YAML文件编写docker-compose.yaml。 在这里,我开始知道YAML文件有两个可用的版本。 在写docker-compose.yaml时我需要使用哪一个,为什么? 什么是确切的区别?

事情很混乱。 一方面是YAML规范版本(除其他外):

  • YAML版本1.1于2005年发布
  • YAML 1.2版于2009年发布

所以没有YAML版本2(但有一个YAML 1.0)

另一方面,docker-compose文件中有版本,如果未指定,则默认为string 1 。 从版本1.6的docker-compose它也支持版本2 (也是一个string)泊坞窗撰写文件。 主要区别在于,在版本2中,您具有特定services密钥下的所有服务。 这在扩展原始版本1顶级密钥服务规范方面当然要灵活得多。

然而,版本1和版本2组成的文件都使用旧的YAML 1.1标准,因为在YAML 1.1下,这些标准可以被解释为(依据端口值)作为六十进制。 YAML 1.2没有这个问题,但是docker-compose依赖PyYAML,并且在2009年之后没有更新来支持YAML 1.2

关于如何从合成版本1 升级到合成版本2 的章节中findIMO的实际差异的最佳信息

我已经做了一个小的包装脚本dcw ,预处理版本2的dcw -compose文件为YAML 1.2(所以你不必担心YAML 1.1。idiosyncrasies),它也允许你在docker-compose.yml设置环境variablesdocker-compose.yml文件。