Docker学习18-Docker-Compose-YAML配置文件语言

Posted by 十渊 on 2019-09-29

YAML配置文件语言

简介
YAML 是专门用来写配置文件的语言,非常简洁和强大,远比 JSON 格式方便。

YAML 语言的设计目标,就是方便人类读写。它实质上是一种通用的数据串行化格式。它的基本语法规则如下:

大小写敏感
使用缩进表示层级关系
缩进时不允许使用 Tab 键,只允许使用空格。
缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
# 表示注释,从这个字符一直到行尾,都会被解析器忽略。

YAML 支持的数据结构有三种:

对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
纯量(scalars):单个的、不可再分的值

对象

对象的一组键值对,使用冒号结构表示

animal: pets

数组

一组连词线开头的行,构成一个数组

  • Cat

  • Dog

  • Goldfish
    数据结构的子成员是一个数组,则可以在该项下面缩进一个空格

  • Array

  • Cat

  • Dog

  • Goldfish

复合结构

对象和数组可以结合使用,形成复合结构

languages:

纯量

纯量是最基本的、不可再分的值。以下数据类型都属于 JavaScript 的纯量

字符串
布尔值
整数
浮点数
Null
时间
日期

为什么说 JSON 不适合做配置文件?

很多项目使用 JSON 作为配置文件,最明显的例子就是 npm 和 yarn 使用的 package.json 文件。当然,还有很多其他文件,例如 CloudFormation(最初只有 JSON,但现在也支持 YAML)和 composer(PHP)。

但是,JSON 实际上是一种非常糟糕的配置语言。别误会我的意思,我其实是喜欢 JSON 的。它是一种相对灵活的文本格式,对于机器和人类来说都很容易阅读,而且是一种非常好的数据交换和存储格式。但作为一种配置语言,它有它的不足。

为什么流行使用 JSON 作为配置语言?

将 JSON 用作配置文件有几个方面的原因,其中最大的原因可能是它很容易实现。很多编程语言的标准库都支持 JSON,开发人员或用户可能已经很熟悉 JSON,所以不需要学习新的配置格式就可以使用那些产品。现在几乎所有的工具都提供 JSON 支持,包括语法突出显示、自动格式化、验证工具等。

JSON的问题

  • 缺乏注释
    无法写注释
  • 过于严格
    格式必须整齐,多一个空格和少一个都有问题
  • 低信噪比
    json的很多标点符号对阅读毫无用处,双引号无意义,对阅读有影响
  • 长字符串
    不支持多行字符串,如果想换行必须使用\n转义
  • 数字
    某些情况下,JSON对数字的定义可能有问题.

这些都是很好的理由,但这种无处不在的格式其实不适合用作配置。

配置文件就是用配置文件语言,json就做为json数据格式.

参考资料