Skip to main content

Maestro

Maestro is a command-line tool designed to manage Docker Compose applications based on defined configurations. It facilitates starting, stopping, and listing services across multiple Docker Compose projects, allowing for streamlined Docker-based development workflows.

Installation

You can install Maestro via pipx:

pipx install maestro-compose

Usage

Maestro offers several commands to interact with your Docker Compose applications:

  • maestro up: Start the services specified in the configured Docker Compose files.
  • maestro down: Stop the running services.
  • maestro list: List the Docker Compose applications along with their respective services and states.

Additional Options

Up

Usage: maestro up [OPTIONS]

Options:
  --applications-dir TEXT  Specify the path containing docker compose applications.
  --target-file TEXT       Specify the target YAML file to use for configuration.
  --dry-run                Simulate the command without making any changes.

Down

Usage: maestro down [OPTIONS]

Options:
  --applications-dir TEXT  Specify the path containing docker compose applications.
  --target-file TEXT       Specify the target YAML file to use for configuration.
  --dry-run                Simulate the command without making any changes.

List

Usage: maestro list [OPTIONS]

Options:
  --applications-dir TEXT  Specify the path containing docker compose applications.
  --target-file TEXT       Specify the target YAML file to use for configuration.
  --services               List the services running in each application.

Configuration

Docker Label Configuration

Maestro utilizes Docker labels for configuration. Below is an example of the Docker label configuration that Maestro expects:

services:
  nginx:
    restart: unless-stopped
    image: nginx
    container_name: myapp
    labels:
      - "maestro.enable=true"
      - "maestro.tags=nfs_mount,compute_intensive"
      - "maestro.priority=800"
      - "maestro.hosts=server,vm"

Maestro Target Configuration (YAML)

Maestro requires a YAML configuration file to define its behavior. Below is an example of the expected structure of this configuration file (maestro.yaml):

hosts_include:
- $current
hosts_exclude:
- vm
tags_include:
  - server
tags_exclude:
- compute_intensive
  • hosts_include: List of hosts to include. Applications matching any of these hosts will be managed by Maestro. Use $all to match all hosts or $current to match the current host.
  • hosts_exclude: List of hosts to exclude. Applications matching any of these hosts will not be managed by Maestro.
  • tags_include: List of tags to include. Applications with any of these tags will be managed by Maestro.
  • tags_exclude: List of tags to exclude. Applications with any of these tags will not be managed by Maestro.

File Tree Setup

Here's an example of how to set up your project directory structure:

project_root/
│
├── applications/
│   ├── app1/
│   │   ├── docker-compose.yaml
│   │   ├── Makefile
│   │   └── ...
│   ├── app2/
│   │   ├── docker-compose.yaml
│   │   ├── Makefile
│   │   └── ...
│   └── app3/
│       ├── docker-compose.yaml
│       ├── Makefile
│       └── ...
│
└── maestro.yaml

In this structure:

  • project_root/: This is the root directory of your project.
  • applications/: This directory contains your Docker Compose applications.
    • app1/, app2/, app3/: Each subdirectory represents a Docker Compose application.
      • docker-compose.yaml: This file contains the Docker Compose configuration for each application.
      • Makefile: This file provides targets to manage Docker Compose services. It must contain a make up and make down target to Maestro to work properly.

Makefile

Each application directory must contain a Makefile with up and down targets to manage Docker Compose services. Here's an example of the Makefile content:

up:
    docker-compose up -d

down:
    docker-compose down

Release files for maestro-compose 0.3.9

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for maestro-compose 0.3.9
File Size Uploaded
maestro_compose-0.3.9.tar.gz 6.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for maestro-compose 0.3.9
File Interpreter ABI Platform
maestro_compose-0.3.9-py3-none-any.whl Python 3 none any Details

Total release size: 14.4 kB

Release files / maestro_compose-0.3.9.tar.gz

Download URL maestro_compose-0.3.9.tar.gz
Size 6.6 kB
Tags Source
SHA-256 checksum
How to use checksums
2d16ac65b5ab09fadf156c05da50b45cd897ce226c97a17c8219b02708e03828
BLAKE2b-256 checksum
How to use checksums
903bb698f076ca1ccd3b4d2020894f815d2f448765780cda461a525d120ea3d2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.3 CPython/3.12.3 Linux/6.11.0-26-generic

Release files / maestro_compose-0.3.9-py3-none-any.whl

Download URL maestro_compose-0.3.9-py3-none-any.whl
Size 7.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3038cadc8e3d53fa60746d7a3ffe8eec49817bba8da6b1e7445812b81f8bd563
BLAKE2b-256 checksum
How to use checksums
9c43dcfa7c96219c0aebddd8d4136adeceba6d39244dd06f5cf355357682a2aa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.3 CPython/3.12.3 Linux/6.11.0-26-generic

Release history Release notifications | RSS feed

This release

0.3.9 This release

2 release files

0.3.8

2 release files

0.3.7

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.10

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page