Extend docker-compose by adding support to:
- include files
- run services (and their dependencies) by tag
- automatically detect service directories by git repository
gem install quaker
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
include
directive - Get rid of hard-coded build paths by automatically resolving service directories using the
git
directive - Being able to limit the services you want to run with the
tag
directives
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: git@github.com:company/warehouse.git
links:
- mongo
tags:
- backend
- warehouse
billing:
git: git@github.com:company/billing.git
links:
- postgres
tags:
- backend
- billing
web:
git: git@github.com: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
- Support service templates
- Automatically feed
docker-compose
with the generated YAML file