# Kompozit
[![Docker Pulls](https://img.shields.io/docker/pulls/veerendra2/kompozit)](https://hub.docker.com/r/veerendra2/kompozit) [![PyPI - Status](https://img.shields.io/pypi/status/kompozit)](https://pypi.org/project/kompozit/) [![PyPI - Version](https://img.shields.io/pypi/v/kompozit)](https://pypi.org/project/kompozit/) [![PyPI - Downloads](https://img.shields.io/pypi/dm/kompozit)](https://pypi.org/project/kompozit/) [![Release](https://github.com/veerendra2/kompozit/actions/workflows/release.yml/badge.svg)](https://github.com/veerendra2/kompozit/actions/workflows/release.yml)
> ℹ Mostly likely you may want to use [Use multiple Compose files](https://docs.docker.com/compose/how-tos/multiple-compose-files/) in Docker Compose itself.
Declarative Configuration Management Tool for Docker Compose.
_Like [`kustomize.io`](https://kustomize.io/), but for [Docker Compose](https://docs.docker.com/compose/)._
<p align="center">
<img alt="kompozit logo", width="150" src="https://i.postimg.cc/cH1dYN6f/komposeit.png">
</p>
## Features
Kompozit simplifies complex Docker Compose setups using declarative overlays, supporting:
- **[`patchesJSON6902`](https://datatracker.ietf.org/doc/html/rfc6902)**: Precise modifications with JSON Merge Patch.
- **[`patchesStrategicMerge`](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-api-machinery/strategic-merge-patch.md)**: Flexible hierarchical changes with Strategic Merge Patch.
## Resources
- 📖 [Documentation](https://veerendra2.gitbook.io/kompozit)
- 🛠️ [Examples](https://github.com/veerendra2/kompozit/tree/main/examples)
## But Why...? 🤔
There are scenarios where you might need different Docker Compose configurations for the same application on different machines.
- For example, I use slightly different configurations for the Traefik reverse proxy when managing my public WordPress site versus my home server. Instead of maintaining multiple, slightly different `docker-compose.yml` files for the same app, you can use kompozit to simplify and manage these variations efficiently.
Additionally, kompozit allows you to combine multiple `docker-compose.yml` files into a single stack.
- For instance, you can keep a generic `docker-compose.yml` for PostgreSQL in a central location and customize it for different stacks in other locations as needed.
## Installation 💻
### PyPi
> [https://pypi.org/project/kompozit/](https://pypi.org/project/kompozit/)
```bash
python -m pip install kompozit
kompozit -h
usage: kompozit [-h] [-b BUILD_PATH] [-o OUTPUT_DIR] [-v]
Declarative Configuration Management Tool for Docker Compose.
options:
-h, --help show this help message and exit
-b, --build BUILD_PATH
Path to a directory containing 'kompozition.yaml' or 'kompozition.yml'. (default: .)
-o, --output-dir OUTPUT_DIR
Directory to save the generated Docker Compose files. (default: None)
-v, --version Show kompozit version
```
### Docker
> [https://hub.docker.com/r/veerendra2/kompozit](https://hub.docker.com/r/veerendra2/kompozit)
```bash
docker pull veerendra2/kompozit
```
## Usage Examples ⚙️
```bash
git clone git@github.com:veerendra2/kompozit.git
cd kompozit
python -m pip install .
kompozit --build ./examples/overlay
...
# inside docker
docker pull kompozit:latest
docker run -it --rm -v ./examples:/examples kompozit:latest -b /examples/overlay
```
## Local Development 🔧
```bash
git clone git@github.com:veerendra2/kompozit.git
cd kompozit
python -m venv venv
source venv/bin/activate
pip install -e .
```
Raw data
{
"_id": null,
"home_page": "https://github.com/veerendra2/kompozit",
"name": "kompozit",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": null,
"keywords": "gitops, cicd, docker-compose, configuration management",
"author": "veerendra2",
"author_email": "vk.tyk23@simplelogin.com",
"download_url": "https://files.pythonhosted.org/packages/ce/81/0101df1706f38c5dd996d47288e6e20e259684e27c010132d01a92f0ef9c/kompozit-0.2.1b0.tar.gz",
"platform": null,
"description": "# Kompozit\n\n[![Docker Pulls](https://img.shields.io/docker/pulls/veerendra2/kompozit)](https://hub.docker.com/r/veerendra2/kompozit) [![PyPI - Status](https://img.shields.io/pypi/status/kompozit)](https://pypi.org/project/kompozit/) [![PyPI - Version](https://img.shields.io/pypi/v/kompozit)](https://pypi.org/project/kompozit/) [![PyPI - Downloads](https://img.shields.io/pypi/dm/kompozit)](https://pypi.org/project/kompozit/) [![Release](https://github.com/veerendra2/kompozit/actions/workflows/release.yml/badge.svg)](https://github.com/veerendra2/kompozit/actions/workflows/release.yml)\n\n> \u2139 Mostly likely you may want to use [Use multiple Compose files](https://docs.docker.com/compose/how-tos/multiple-compose-files/) in Docker Compose itself.\n\nDeclarative Configuration Management Tool for Docker Compose.\n\n_Like [`kustomize.io`](https://kustomize.io/), but for [Docker Compose](https://docs.docker.com/compose/)._\n\n<p align=\"center\">\n <img alt=\"kompozit logo\", width=\"150\" src=\"https://i.postimg.cc/cH1dYN6f/komposeit.png\">\n</p>\n\n## Features\n\nKompozit simplifies complex Docker Compose setups using declarative overlays, supporting:\n\n- **[`patchesJSON6902`](https://datatracker.ietf.org/doc/html/rfc6902)**: Precise modifications with JSON Merge Patch.\n- **[`patchesStrategicMerge`](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-api-machinery/strategic-merge-patch.md)**: Flexible hierarchical changes with Strategic Merge Patch.\n\n## Resources\n\n- \ud83d\udcd6 [Documentation](https://veerendra2.gitbook.io/kompozit)\n- \ud83d\udee0\ufe0f [Examples](https://github.com/veerendra2/kompozit/tree/main/examples)\n\n## But Why...? \ud83e\udd14\n\nThere are scenarios where you might need different Docker Compose configurations for the same application on different machines.\n\n- For example, I use slightly different configurations for the Traefik reverse proxy when managing my public WordPress site versus my home server. Instead of maintaining multiple, slightly different `docker-compose.yml` files for the same app, you can use kompozit to simplify and manage these variations efficiently.\n\nAdditionally, kompozit allows you to combine multiple `docker-compose.yml` files into a single stack.\n\n- For instance, you can keep a generic `docker-compose.yml` for PostgreSQL in a central location and customize it for different stacks in other locations as needed.\n\n## Installation \ud83d\udcbb\n\n### PyPi\n\n> [https://pypi.org/project/kompozit/](https://pypi.org/project/kompozit/)\n\n```bash\npython -m pip install kompozit\n\nkompozit -h\nusage: kompozit [-h] [-b BUILD_PATH] [-o OUTPUT_DIR] [-v]\n\nDeclarative Configuration Management Tool for Docker Compose.\n\noptions:\n -h, --help show this help message and exit\n -b, --build BUILD_PATH\n Path to a directory containing 'kompozition.yaml' or 'kompozition.yml'. (default: .)\n -o, --output-dir OUTPUT_DIR\n Directory to save the generated Docker Compose files. (default: None)\n -v, --version Show kompozit version\n```\n\n### Docker\n\n> [https://hub.docker.com/r/veerendra2/kompozit](https://hub.docker.com/r/veerendra2/kompozit)\n\n```bash\ndocker pull veerendra2/kompozit\n```\n\n## Usage Examples \u2699\ufe0f\n\n```bash\ngit clone git@github.com:veerendra2/kompozit.git\ncd kompozit\npython -m pip install .\n\nkompozit --build ./examples/overlay\n...\n\n# inside docker\ndocker pull kompozit:latest\ndocker run -it --rm -v ./examples:/examples kompozit:latest -b /examples/overlay\n```\n\n## Local Development \ud83d\udd27\n\n```bash\ngit clone git@github.com:veerendra2/kompozit.git\ncd kompozit\n\npython -m venv venv\nsource venv/bin/activate\npip install -e .\n```\n",
"bugtrack_url": null,
"license": "Apache License",
"summary": "Declarative Configuration Management Tool for Docker Compose.",
"version": "0.2.1b0",
"project_urls": {
"Documentation": "https://veerendra2.gitbook.io/kompozit",
"Download": "https://github.com/veerendra2/kompozit/archive/0.2.1-beta.tar.gz",
"Homepage": "https://github.com/veerendra2/kompozit"
},
"split_keywords": [
"gitops",
" cicd",
" docker-compose",
" configuration management"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "ce810101df1706f38c5dd996d47288e6e20e259684e27c010132d01a92f0ef9c",
"md5": "d3c43ca209e3e9f9b280a093da688793",
"sha256": "2398d706455b1ef70b9594b36a74c22db90c4e7112e3819ee57546547667888a"
},
"downloads": -1,
"filename": "kompozit-0.2.1b0.tar.gz",
"has_sig": false,
"md5_digest": "d3c43ca209e3e9f9b280a093da688793",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 9220,
"upload_time": "2024-12-24T17:58:28",
"upload_time_iso_8601": "2024-12-24T17:58:28.896567Z",
"url": "https://files.pythonhosted.org/packages/ce/81/0101df1706f38c5dd996d47288e6e20e259684e27c010132d01a92f0ef9c/kompozit-0.2.1b0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-12-24 17:58:28",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "veerendra2",
"github_project": "kompozit",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "kompozit"
}