#docker-compose #docker #compose #monitoring

compose-rs

A Rust library to execute docker-compose commands and monitor compose stacks

3 releases

0.0.3 Apr 18, 2024
0.0.2 Apr 18, 2024
0.0.1 Apr 18, 2024

#282 in Configuration

23 downloads per month

MIT license

34KB
820 lines

compose-rs

compose-rs is a Rust library designed to manage Docker Compose environments programmatically. It provides a straightforward API for executing common Docker Compose commands directly from Rust code.

Features

  • Easy Setup: Quickly configure your Docker Compose path and start managing containers.
  • Command Execution: Support for basic Docker Compose commands like up, down, ps, and stats.
  • Stream Stats: Stream statistics of services in real-time.

Installation

Add to your Cargo.toml:

[dependencies]
+ compose-rs = "0.0.3"

Quick Start

This example demonstrates how to bring up a Docker Compose environment and monitor the stats of running services in real-time.

use compose_rs::{Compose, ComposeCommand};

fn main() {
    let compose = Compose::builder()
        .path("docker-compose.yml")
        .build()
        .unwrap();

    // Execute the `up` command to start services defined in the Docker Compose file
    if let Err(e) = compose.up().exec() {
        eprintln!("Error starting services: {}", e);
    }

    // Stream stats and print them in real-time for each service
    compose
        .stats()
        .stream()
        .unwrap()
        .into_iter()
        .for_each(|service| {
            println!("{:?}", service);
        });

    // After monitoring, bring down the services
    if let Err(e) = compose.down().exec() {
        println!("Error stopping services: {}", e);
    }
}

Documentation

For detailed API documentation and advanced usage, please refer to the generated documentation.

Contributing

Contributions are welcome! Please feel free to contribute by opening issues or submitting pull requests.

License

compose-rs is licensed under the MIT license. See LICENSE for details.

Dependencies

~3–5MB
~90K SLoC