Skip to main content

A simple command line tool for managing Docker Compose stacks using tags and other metadata.

Project description

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

maestro_compose-0.3.1.tar.gz (6.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

maestro_compose-0.3.1-py3-none-any.whl (7.8 kB view details)

Uploaded Python 3

File details

Details for the file maestro_compose-0.3.1.tar.gz.

File metadata

  • Download URL: maestro_compose-0.3.1.tar.gz
  • Upload date:
  • Size: 6.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.12.3 Linux/6.8.0-51-generic

File hashes

Hashes for maestro_compose-0.3.1.tar.gz
Algorithm Hash digest
SHA256 2abd43b8853933f0c869125afa38641f9c6a80269c7ca7d7866771a8394ff075
MD5 72eaaa90cf152662a5fc2abb3397a12c
BLAKE2b-256 ce4e5ec205db8b2444a8347d5df217c0977f58a4f5f53c7cf72096bfc0638c89

See more details on using hashes here.

File details

Details for the file maestro_compose-0.3.1-py3-none-any.whl.

File metadata

  • Download URL: maestro_compose-0.3.1-py3-none-any.whl
  • Upload date:
  • Size: 7.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.12.3 Linux/6.8.0-51-generic

File hashes

Hashes for maestro_compose-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d00db55a8e9c8c0c1e9d408cceaaa343eb65c088bc9a6449309480b9a7d6c022
MD5 146ff28e7ddb75e96900a640ed3fa47a
BLAKE2b-256 b1ecb4d198ed342d5ce0fbd136c075776bb02b6b51e321036d0d780ebc2543e0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page