#docker-compose #compose #yaml #serialization #deserialize #strongly-typed #file

docker-compose-types

以相对强类型方式反序列化和序列化 docker-compose.yml 文件

30 个版本 (12 个重大变更)

0.13.0 2024 年 7 月 19 日
0.11.0 2024 年 6 月 21 日
0.7.2 2024 年 3 月 1 日
0.7.0 2023 年 12 月 12 日
0.1.5 2021 年 7 月 5 日

#150数据结构

Download history 243/week @ 2024-05-03 362/week @ 2024-05-10 425/week @ 2024-05-17 402/week @ 2024-05-24 511/week @ 2024-05-31 402/week @ 2024-06-07 387/week @ 2024-06-14 422/week @ 2024-06-21 268/week @ 2024-06-28 272/week @ 2024-07-05 251/week @ 2024-07-12 401/week @ 2024-07-19 640/week @ 2024-07-26 608/week @ 2024-08-02 223/week @ 2024-08-09 163/week @ 2024-08-16

每月 1,705 次下载
用于 2 crates

MIT/Apache

38KB
914 代码行

Docker Compose Types

crates.io

非常欢迎贡献,这个 crate 的目的是允许以尽可能少的错误空间安全地序列化 docker-compose 文件。

示例用法

解析 docker-compose 文件

use docker_compose_types::Compose;

fn main() {
    let file_payload =
        std::fs::read_to_string("tests/fixtures/v3-full/docker-compose.yml").unwrap();
    let compose_content = match serde_yaml::from_str::<Compose>(&file_payload) {
        Ok(c) => c,
        Err(e) => panic!("Failed to parse docker-compose file: {}", e),
    };
    println!("Parsed docker-compose file: {:#?}", compose_content);
}

从 crate 的类型创建 docker-compose 文件

use docker_compose_types::{Compose, Service, Services, SingleService};
use serde_yaml;

fn main() {
    let compose_content = Compose {
        version: Some("3.8".to_string()),
        services: {
            let mut services = indexmap::IndexMap::new();
            services.insert(
                "web".to_string(),
                Some(Service {
                    image: Some("nginx:latest".to_string()),
                    ..Default::default()
                }),
            );
            Some(Services(services))
        },
        ..Default::default()
    };

    let target_file = std::path::Path::new("docker-compose.yml");
    // serialize to string
    let serialized = match serde_yaml::to_string(&compose_content) {
        Ok(s) => s,
        Err(e) => panic!("Failed to serialize docker-compose file: {}", e),
    };
    // serialize to file
    std::fs::write(target_file, serialized).unwrap();
}

许可协议

根据您的选择,在以下许可协议下获得许可:Apache 许可协议,版本 2.0MIT 许可协议
除非您明确说明,否则任何有意提交以包含在此 crate 中并由您定义的贡献,根据 Apache-2.0 许可协议,应按上述方式双重许可,不附加任何额外条款或条件。

依赖关系

~2–12MB
~132K SLoC