48 lines
2.7 KiB
Markdown
48 lines
2.7 KiB
Markdown
# Compose Anything
|
|
|
|
Compose Anything helps users quickly deploy various services by providing a set of high-quality Docker Compose configuration files. These configurations constrain resource usage, can be easily migrated to systems like K8S, and are easy to understand and modify.
|
|
|
|
## Supported Services
|
|
|
|
| Service | Version |
|
|
| ---------------------------- | ------- |
|
|
| [Redis](./src/redis) | 8.2.1 |
|
|
| [MinerU v2](./src/mineru-v2) | 2.5.3 |
|
|
|
|
## Guidelines
|
|
|
|
1. **Out-of-the-box**: Configurations should work out-of-the-box, requiring no setup to start (at most, provide a `.env` file).
|
|
2. **Simple Commands**
|
|
- Each project provides a single `docker-compose.yaml` file.
|
|
- Command complexity should not exceed the `docker compose` command; if it does, provide a `Makefile`.
|
|
- If a service requires initialization, use `depends_on` to simulate Init containers.
|
|
3. **Stable Versions**
|
|
- Provide the latest stable image version instead of `latest`.
|
|
- Allow version configuration via environment variables.
|
|
4. **Highly Configurable**
|
|
- Prefer configuration via environment variables rather than complex command-line arguments.
|
|
- Sensitive information like passwords should be passed via environment variables or mounted files, not hardcoded.
|
|
- Provide reasonable defaults so services can start with zero configuration.
|
|
- Provide a well-commented `.env.example` file to help users get started quickly.
|
|
- Use Profiles for optional dependencies.
|
|
5. **Cross-Platform**: (Where supported by the image) Ensure compatibility with major platforms.
|
|
- Compatibility: Debian 12+/Ubuntu 22.04+, Windows 10+, macOS 12+.
|
|
- Support multiple architectures where possible, such as x86-64 and ARM64.
|
|
6. **Careful Mounting**
|
|
- Use relative paths for configuration file mounts to ensure cross-platform compatibility.
|
|
- Use named volumes for data directories to avoid permission and compatibility issues with host path mounts.
|
|
7. **Default Resource Limits**
|
|
- Limit CPU and memory usage for each service to prevent accidental resource exhaustion.
|
|
- Limit log file size to prevent logs from filling up the disk.
|
|
- For GPU services, enable single GPU by default.
|
|
8. **Comprehensive Documentation**
|
|
- Provide good documentation and examples to help users get started and understand the configurations.
|
|
- Clearly explain how to initialize accounts, admin accounts, etc.
|
|
- Provide security and license notes when necessary.
|
|
- Offer LLM-friendly documentation for easy querying and understanding by language models.
|
|
9. **Best Practices**: Follow other best practices to ensure security, performance, and maintainability.
|
|
|
|
## License
|
|
|
|
MIT License.
|