YAML – 流程
YAML是一种简洁明了的数据序列化语言,其适用于各种编程语言,并且易于人阅读和编写,它可用于存储和传输数据,也可以用于配置文件等方面。它通常被用于编写CI/CD流程中的YAML文件,这些文件用于配置持续集成和持续交付管道。
YAML的基本语法
YAML的基本语法非常简洁,它使用缩进和冒号来表示层次结构。下面是一个示例YAML文档:
name: Alice
age: 35
city: San Francisco
在这个例子中,name,age和city是该文档的键,它们的值分别是Alice,35和San Francisco。
你还可以在YAML文档中创建一个数组,就像这样:
fruits:
- Apple
- Banana
- Cherry
在这个例子中,fruits是键,其值是包含三个字符串Apple,Banana和Cherry的数组。
还可以表示嵌套结构的数据类型,例如:
person:
name: Alice
age: 35
address:
city: San Francisco
state: California
在这个示例中,person是一个嵌套结构,并包含name,age和address三个键。address也是一个嵌套结构,它有两个键city和state。
在Python中读写YAML
在Python中,我们可以使用PyYAML库操作YAML文件。假设我们有一个YAML文件example.yaml,它有以下内容:
name: Alice
age: 35
city: San Francisco
我们可以使用以下方式读取该文件:
import yaml
with open("example.yaml", 'r') as stream:
data = yaml.safe_load(stream)
print(data)
在这个示例中,我们使用了yaml模块的safe_load()函数来读取YAML文件并将其转换为Python数据结构。yaml模块还提供了其他方便的函数来处理YAML文件。
接下来,我们将使用以下代码在Python中创建一个YAML文件:
import yaml
data = {
'name': 'Alice',
'age': 35,
'city': 'San Francisco'
}
with open("example.yaml", 'w') as stream:
yaml.safe_dump(data, stream)
在这个示例中,我们使用了yaml模块的safe_dump()函数来将Python字典转换为YAML并将其写入文件。
除了safe_load()和safe_dump()函数之外,yaml模块还提供了其他一些功能。具体请参考官方文档。
使用YAML进行Docker部署
在Docker中,我们可以使用YAML文件来定义Docker容器的配置和运行时行为。这就是所谓的Docker Compose文件。假设我们有一个Docker Compose文件docker-compose.yaml,它定义了一个MySQL数据库和一个Web应用程序容器:
version: '3'
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: mysql
MYSQL_DATABASE: app
MYSQL_USER: app
MYSQL_PASSWORD: app
web:
build: .
command: python app.py
volumes:
- .:/code
ports:
- "5000:5000"
depends_on:
- db
volumes:
db_data:
在这个示例中,version字段指定Docker Compose文件的版本,services字段包含两个定义了db和web两个服务的字典。db服务使用mysql:5.7镜像,并将其数据卷映射到db_data卷上。 web服务使用当前文件夹的Dockerfile构建,并且将映射5000端口。
最后,我们可以使用以下命令来启动Docker Compose:
docker-compose up
上述命令将使用docker-compose.yaml文件来启动相关容器。我们也可以使用其他命令来管理容器,例如docker-compose down来停止所有容器。
结论
YAML是一种简洁明了的数据序列化语言,它可以用于存储和传输数据、配置文件,也可以用于CI/CD中的YAML文件。Python中的PyYAML库提供了读取和编写YAML文件的方法。在Docker中,我们可以使用YAML文件来定义Docker容器的配置和运行时行为,这就是所谓的Docker Compose文件。
极客笔记