Crate docker_compose [] [src]

Support for reading and writing docker-compose.yml files.

The docker-compose.yml format is suprisingly complex, with support for multiple ways of representing the same data. This library attemps to provide a single, consistent and type-safe representation of everything found in a docker-compose.yml version 2 file.

Here's an example of one property, build, being represented in two different ways, and how we normalize it:

use std::str::FromStr;
use docker_compose::v2 as dc;

let yaml = r#"---

version: "2"
services:
  app1:
    build:
      context: "./app1"
      dockerfile: "Dockerfile-alt"

  app2:
    build: "./app2"

"#;

let file = dc::File::from_str(yaml).unwrap();

let app1 = file.services.get("app1").unwrap();
let build1 = app1.build.as_ref().unwrap();
assert_eq!(build1.context, dc::value(dc::Context::new("./app1")));
assert_eq!(build1.dockerfile.as_ref().unwrap(),
           &dc::value("Dockerfile-alt".to_owned()));

// We automatically convert all different `build:` syntaxes
// to be consistent.
let app2 = file.services.get("app2").unwrap();
let build2 = app2.build.as_ref().unwrap();
assert_eq!(build2.context, dc::value(dc::Context::new("./app2")));Run

An interesting place to start browsing this documentation is docker_compose::v2::Service. You can drill down into other fields from there.

Modules

v2

Support for the docker-compose.yml version 2 file format.

Type Definitions

Error

An error manipulating a docker-compose.yml file. For now, we use a generic, catch-all error type, but this may change.