Crates.io | docker-compose-types |
lib.rs | docker-compose-types |
version | 0.15.0 |
source | src |
created_at | 2021-05-12 17:07:39.641991 |
updated_at | 2024-10-03 14:56:07.664718 |
description | Deserialization and Serialization of docker-compose.yml files in a relatively strongly typed fashion. |
homepage | |
repository | https://github.com/stephanbuys/docker-compose-types |
max_upload_size | |
id | 396586 |
size | 97,361 |
Contributions are very welcome, the idea behind this crate is to allow for safe serialization of docker-compose files with as little room for error as possible.
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);
}
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();
}