我第一次使用YAML文件来编写docker-compose.yaml。在这里,我发现YAML文件有两个版本。在编写docker-compose.yaml时我需要使用哪一个?为什么?有什么确切的区别?
答案 0 :(得分:0)
事情令人困惑。一方面有YAML规范版本(以及其他):
所以没有YAML版本2(但是有一个YAML 1.0)
另一方面,docker-compose文件中有版本,如果未指定,则默认为字符串 1
。从版本1.6 docker-compose
开始,它还支持版本2
(也是一个字符串)docker撰写文件。主要区别在于,在版本2中,您拥有特定services
密钥下的所有服务。当然,在扩展原始版本1 toplevel-key-is-service规范时,这当然要灵活得多。
然而,版本1和版本2组合文件都使用旧的YAML 1.1标准,这使得您必须引用端口映射,因为在YAML 1.1下,这些可以被解释(取决于端口值)为sexagesimals。 YAML 1.2没有这个问题,但是docker-compose依赖于PyYAML并且在2009年之后没有更新以支持YAML 1.2
有关您在the section on how to upgrade中从撰写版本1到撰写版本2的IMO的实际差异的最佳信息
我制作了小包装脚本dcw
,它将版本2的docker-compose文件预处理为YAML 1.2(所以你不必担心YAML 1.1。特性),它还允许你设置环境变量来自docker-compose.yml
文件。