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$allto match all hosts or$currentto 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 amake upandmake downtarget 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)
| File | Size | Uploaded | |
|---|---|---|---|
| maestro_compose-0.3.9.tar.gz | 6.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|