# Docker Composer [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) A lightweight and flexible Docker container management solution that simplifies the orchestration and automation of container deployments. While similar to Umbrel's container management approach, Docker Composer provides a more versatile solution that can be integrated into any Docker environment. ## 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 1. Clone the repository: ```bash git clone https://git.hhf.technology/hhf/maestro.git cd maestro ``` 2. Configure your environment by editing `docker-composer.conf` (see Configuration section below) 3. Ensure scripts have executable permissions: ```bash 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: ```yaml 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`. 1. **Automated Boot Management** ```bash ./composer.py ``` 2. **Manual Container Reconstruction** ```bash ./re_compose.py ``` 3. **Interactive Container Management** ```bash ./basic-management.py ``` ### Adding to System Startup To enable automatic container management on system boot: #### Using systemd 1. Create a service file: ```bash sudo nano /etc/systemd/system/docker-composer.service ``` 2. Add the following content: ```ini [Unit] Description=Docker Composer Container Management After=docker.service Requires=docker.service [Service] Type=simple ExecStart=/path/to/composer.py WorkingDirectory=/path/to/docker-composer User=your-user Group=docker [Install] WantedBy=multi-user.target ``` 3. Enable and start the service: ```bash 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: 1. **Permission Denied** - Ensure the executing user is in the docker group - Check file permissions on scripts and configuration 2. **Configuration Not Found** - Verify script execution from correct directory - Check `docker-composer.conf` exists and is readable 3. **Container Exclusion Issues** - Verify container names match exactly - Check for whitespace in configuration ## Contributing 1. Fork the repository 2. Create your feature branch 3. Commit your changes 4. Push to the branch 5. Create a new Pull Request ## License This project is licensed under the MIT License - see the [LICENSE](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 [GitHub Issues](https://github.com/yourusername/docker-composer/issues) page.