0.0
No commit activity in last 3 years
No release in over 3 years
Advanced docker and consul control scripts
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Development

~> 1.14
~> 10.0

Runtime

>= 0
 Project Readme

docker_toolkit

Helper tools for work with docker and consul

Build Status Gem Version

Scripts

Some useful scripts to run inside or outside container

waiter.rb

waiter.rb allows to wait many conditions:

  • tcp port opening
  • PostgreSQL database creation
  • PostgreSQL table creation
  • file creation
  • healthy Consul service
Usage: waiter.rb [options] -- exec
        --tcp host:port              Wait for tcp accepts on host:port
        --db dbname                  Wait for PG database exists. Using --tcp to conenct PG
        --tb tablename               Wait for PG table exists. Using --tcp to conenct PG
    -f, --file filename              Wait for file exists.
        --consul-addr addr=http://localhost:8500
                                     HTTP addres to connect to consul
        --consul                     Wait for local consul agent to be ready
        --consul-service service     Wait for service appear in consul
        --consul-service-count count Wait for this count services appear in consul
        --consul-tag tag             User tag to filter services in consul
        --user user                  username
        --pass pass                  password
    -t, --timeout secs=15            Total timeout
    -i, --interval secs=2            Interval between attempts
    -q, --quiet                      Do not output any status messages

consul.rb

Helper to use Consul in 12Factor application. Inspired by https://github.com/hashicorp/envconsul:

  • export Consul key/value as environment variables
  • references in Consul key/value store
  • read config file and store values in Consul
  • read files and store it in Consul key/value store
Usage: consul.rb [options] -- exec
        --consul url                 Set up a custom Consul URL
        --token token                Connect into consul with custom access token (ACL)
        --init [service]             Initialize Consul services from config
        --config file                Read service configulation from file
        --upload                     Upload files to variables
        --show [service]             Show service configulation from Consul
        --override                   override existed keys
    -d, --dereference                dereference consul values in form of "consul://key/subkey"
        --env prefix                 export KV values from prefix as env varaibles
        --export                     add export to --env output
        --pristine                   not include the parent processes' environment when exec child process
        --put path:value             put value to path
        --get path                   get value from

Example config.yml:

.dbconfig: &dbconfig
  DATABASE_HOST:
    value: db
  DATABASE_NAME:
    value: dbname

srv1: &srv1
  <<: [*dbconfig]
  LOG_LEVEL:
    value: debug
  CA_CERT:
    file: /tmp/ca/cacert.pem
  CLIENT_CERT:
    value: consul://services/ca/private/cert.pem
  CLIENT_KEY:
    value: consul://services/ca/private/key.pem

srv2:
  <<: *srv1
  CA_CERT:
    value: consul://services/env/srv1/ca_cert

merger.rb

Merge docker-compose file of any version. Allow inheritance and extending services.

COMPOSE_FILE=file1.yml:file2.yml merger.rb > /tmp/result.yml