Multi-file compose/stack helper
Project description
Otta
Otta is a compose file inheretance helper
Rationale
For simple usecases builtin defaults of docker-compose are just fine. But systems do grow and the following problems are appearing:
- shell commands are becoming longer
- code duplication in compose files is getting worse
- project root directory is getting bloated with compose files
- complex compose configurations need up to date documentation
Example
Without Otta
:
docker-compose -f base.yml -f local.yml -f mock_emails.yml -p local up
With Otta
:
otta up
Otta file and otta directory
Otta directory:
otta ├── base.yml ├── local.yml ├── mock_mail_server.yml ├── prod_common.yml ├── prod_a.yml ├── prod_b.yml └── otta.yml
Otta file:
files: - base.yml - local.yml - mock_mail_server.yml - prod_common.yml - prod_a.yml - prod_b.yml default_recipe: local recipes: local: project_name: local files: - base.yml - local.yml options: mockmail: files: - mock_mail_server.yml prod_a: files: - base.yml - prod_common.yml - prod_a.yml prod_b: project_name: production files: - base.yml - prod_common.yml - prod_b.yml
Explanation
Otta configuration is a directory with compose files and single otta file.
Otta files defines
- root property
files
that defines all the files that can be used in recipes - root property
default_recipe
that defines... well, default recipe - the most important property,
recipes
defines available recipes
Each recipe has
- name, 1 to 40 symbols: letters, numbers and underscores
- optional
project_name
, with identical restrictions files
, list of files defined in root propertyoptions
, optional definition of available options
Options have name (1 to 20 symbols, numbers letters and underscores) and files
property.
CLI reference
Otta and it's variants determine recipe from OTTA_REC
env variable.
Recipe specification is either just recipe (local
), or recipe with options (local+mockmail
)
OTTA_FILE
is path to otta file, absolute or relative
Setting OTTA_DEBUG
to 1
makes the program print debug info
otta
binary
otta
call is equal to docker-compose -f base.yml -f local.yml -p local
skara
binary
skara
call is equal to docker stack deploy -c base.yml -c local.yml
project_name
is ignored
kumla
binary
kumla
call is equal to kompose -f base.yml -f local.yml
project_name
is ignored
Contributing
Please report all problems to GitLab
Pull requests are welcome
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.