From da299b3e609df09edc9089997b0abf96334460de Mon Sep 17 00:00:00 2001 From: hhf Date: Thu, 5 Dec 2024 22:28:20 +0530 Subject: [PATCH] Update README.md --- README.md | 178 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 176 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d0f6c11..778a9df 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,177 @@ -# docker-manager +# Docker Composer -this is a simple program to manage docker containers. \ No newline at end of file +[![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. \ No newline at end of file