YAML 语法详细说明
一、基础结构
YAML = 缩进表示层级(不用 {} 和 [])
key: value
二、数据类型
1. 字符串
name: Tom
title: "Hello World"
desc: 'Single quoted string'
必须加引号的情况
url: "http://example.com:8080"
password: "abc#123"
env: "on" # 否则可能被解析成 boolean
2. 数字
age: 18
price: 19.99
3. 布尔值
enabled: true
disabled: false
️ 下面这些也会被识别为 true:
yes
on
4. null
value: null
value: ~
三、数组(List)
写法 1(推荐)
fruits:
- apple
- banana
- orange
写法 2(行内)
fruits: [apple, banana, orange]
四、对象(Map)
user:
name: Tom
age: 18
等价于:
user: { name: Tom, age: 18 }五、嵌套结构
database:
host: 127.0.0.1
port: 3306
users:
- root
- admin
六、多行字符串
1. 保留换行符(|)
message: |
Hello
World
结果:
Hello
World
2. 折叠为一行(>)
message: >
Hello
World
结果:
Hello World
七、注释
# 这是注释
key: value # 行尾注释
八、锚点 & 引用(高级用法)
定义锚点
default: &default_settings
timeout: 30
retries: 3
使用引用
prod:
<<: *default_settings
timeout: 60
九、合并键(常用于配置复用)
base: &base
host: localhost
port: 3306
dev:
<<: *base
database: dev_db
十、特殊字符注意
以下必须加引号:
:
#
&
*
?
|
>
@
`
示例:
password: "abc#123"
url: "http://test:8080"
十一、缩进规则
只能用 空格
不能用 tab
通常 2 或 4 个空格
同级必须对齐
错误示例:
user:
name: Tom # 少了缩进
十二、真实示例(Docker Compose)
version: "3.8"
services:
app:
image: php:8.2
ports:
- "8080:80"
environment:
APP_ENV: local
DEBUG: "true"