4.4 KiB
Maestro
Maestro is an elegant and lightweight solution for Docker container orchestration that simplifies the complex symphony of container deployments. Like a conductor leading an orchestra, Maestro harmoniously manages your Docker containers with precision and grace.ent.
Features
- Automated container management and orchestration
- Boot-time container recomposition
- On-demand container reconstruction
- Interactive container management interface
- Selective container exclusion
- Compatible with any Docker environment
Prerequisites
- Python 3.6 or higher
- Docker Engine
- Docker Compose
- Appropriate Docker permissions for the executing user
Installation
- Clone the repository:
git clone https://git.hhf.technology/hhf/maestro.git
cd maestro
-
Configure your environment by editing
docker-composer.conf
(see Configuration section below) -
Ensure scripts have executable permissions:
chmod +x *.py
Configuration
docker-composer.conf
The docker-composer.conf
file contains essential configuration parameters:
Parameter | Description | Example |
---|---|---|
compose-path |
Directory containing Docker container folders | /opt/docker/containers |
exclude-containers |
List of containers to exclude from management | ["container1", "container2"] |
Example configuration:
compose-path: /opt/docker/containers
exclude-containers:
- monitoring
- internal-proxy
Directory Structure
Your container directory structure should follow this format:
compose-path/
├── container1/
│ └── docker-compose.yml
├── container2/
│ └── docker-compose.yml
└── container3/
└── docker-compose.yml
Usage
Available Scripts
Script | Description | Use Case |
---|---|---|
composer.py |
Main orchestration script | Automated container management on system boot |
re_compose.py |
Manual reconstruction tool | On-demand container rebuild and reconfiguration |
basic-management.py |
Interactive management interface | Basic container operations (start, stop, remove) |
Running the Scripts
All scripts must be executed from the same directory as docker-composer.conf
.
- Automated Boot Management
./composer.py
- Manual Container Reconstruction
./re_compose.py
- Interactive Container Management
./basic_management.py
Adding to System Startup
To enable automatic container management on system boot:
Using systemd
- Create a service file:
sudo nano /etc/systemd/system/docker-composer.service
- Add the following content:
[Unit]
Description=Maestro Docker Container Orchestration
After=docker.service
Requires=docker.service
[Service]
Type=simple
ExecStart=/path/to/composer.py
WorkingDirectory=/path/to/maestro
User=your-user
Group=docker
[Install]
WantedBy=multi-user.target
- Enable and start the service:
sudo systemctl enable docker-composer
sudo systemctl start docker-composer
Security Considerations
- Ensure proper file permissions on configuration files
- Run scripts with minimal required privileges
- Regularly audit excluded containers list
- Monitor container logs for unexpected behavior
Troubleshooting
Common issues and solutions:
-
Permission Denied
- Ensure the executing user is in the docker group
- Check file permissions on scripts and configuration
-
Configuration Not Found
- Verify script execution from correct directory
- Check
docker-composer.conf
exists and is readable
-
Container Exclusion Issues
- Verify container names match exactly
- Check for whitespace in configuration
Contributing
- Fork the repository
- Create your feature branch
- Commit your changes
- Push to the branch
- Create a new Pull Request
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
- Inspired by Umbrel's container management approach
- Built with Python and Docker
- Community contributions and feedback
For bug reports and feature requests, please use the Forum Comments page.