Skip to content

django-stars/telega-compose

Repository files navigation

telega-compose

https://travis-ci.org/django-stars/telega-compose.svg?branch=master

This is a wrapper on docker-compose, which extends compose file syntax to keep several configurations (states) of your services in one file, with similar to docker-compose file syntax using native YAML anchors and aliases.

How it works:

  • Render in-memory docker-compose file for required state from states file.
  • Call docker-compose app with rendered file (state) and apply required docker-compose command on it.

States file reference:

It's a YAML file with two required sections: compose and states.

Section compose is regular docker-compose config excluding services section:

compose:
  version: '3.4'
  configs:
    my_config:
      file: ./my_config.txt
    my_other_config:
      external: true
  secrets:
    my_secret:
      file: ./my_secret.txt
    my_other_secret:
      external: true
  volumes:
    data:
    media:

Section states is a list of states with description of services section for each state:

states:
  live:
    services:
      backend: *backend_service
      database: *database_service
      webserver: *webserver_service

You can describe service in separate section or inside states section. Also, you can inherit early described service and override some parameters in place:

states:
  local:
    services:
      database: &database_local_service
        <<: *database_service
        ports:
          - "127.0.0.1:5432:5432"

The rest of the sections you can use for you own purposes. For example to configure logging for all services:

---
compose:
  ...

config:
  logging: &logging_config
    driver: "json-file"
    options:
      max-size: 50m

components:

  backend: &backend_service
    ...
    logging: *logging_config

  database: &database_service
    ...
    logging: *logging_config

  webserver: &webserver_service
    ...
    logging: *logging_config

states:

  live:
    services:
      backend: *backend_service
      database: *database_service
      webserver: *webserver_service

CLI usage:

tcompose [-h] [-f FILE] state [docker-compose parameters]

Positional arguments:

Optional arguments:

  • -h, --help - to show help message
  • -f FILE, --file FILE - path to states file, by default: states.yml

Examples:

tcompose local_dev config
tcompose live -f /path/to/my-custom-states.yml up -d
tcompose qa -f /path/to/states.yml --project-name acme up

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published