Skip to main content

Utility to render docker-compose files with different states

Project description

https://travis-ci.org/django-stars/telega-compose.svg?branch=master https://codecov.io/gh/django-stars/telega-compose/branch/master/graph/badge.svg https://badge.fury.io/py/telega-compose.svg

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

telega-compose-0.0.2.tar.gz (4.9 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page