Quaker
Extend docker-compose by adding support to:
- include files
- run services (and their dependencies) by tag
- automatically detect service directories by git repository
Installation
gem install quaker
Usage
Suppose, you're developing microservices and want to launch all dependencies while working on some service.
Quaker can help you by:
- Better organizing your docker-compose definitions by adding
includedirective - Get rid of hard-coded build paths by automatically resolving service directories using the
gitdirective - Being able to limit the services you want to run with the
tagdirectives
Directory layout
Suppose all your services are located in ~/projects
You'll need the following directory structure to get running:
-projects
|-| docker
| |-| services
| |- all.yml
|- warehouse_service
|- web
|- billing_service
Here backend, web and background are cloned git repositories you're working on.
You're all.yml file might look like:
---
include:
- infra.yml
warehouse:
git: [email protected]:company/warehouse.git
links:
- mongo
tags:
- backend
- warehouse
billing:
git: [email protected]:company/billing.git
links:
- postgres
tags:
- backend
- billing
web:
git: [email protected]:company/web.git
links:
- redis
tags:
- warehouse
- billing
- ui
In your infra.yml file you'll have:
---
redis:
image: redis
postgres:
image: postgres
mongo:
image: mongo
In this case you can generate docker-compose.yml for only the backend services and their dependencies by running:
quaker -t backend
Note: - the generated docker-compose.yml will not include the redis service as it is
not a dependency of any service with the backend tag, but will include mongo
and postgres even if they don't explicitly have the backend tag.
Then you can feed the generated docker-compose.yml to docker-compose like this:
qaker -t backend | docker-compose -f - up
Roadmap
- Support service templates
- Automatically feed
docker-composewith the generated YAML file