Skip to content

Instantly share code, notes, and snippets.

@travishein
Last active April 28, 2021 03:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save travishein/e8837983568930585fe49804e9c75cd0 to your computer and use it in GitHub Desktop.
Save travishein/e8837983568930585fe49804e9c75cd0 to your computer and use it in GitHub Desktop.
docker-compose-compose : Yo dawg, i heard you like to use docker-compose to compose your compose files
$>./scripts/docker-compose-compose
INFO:root:Dependencies file: /home/thein/Documents/stack/docker-compose-files/v2/dependencies.json
INFO:root:Found stack: {'name': 'butler', 'render_file': 'butler_stack.yml', 'services': ['butler']}
INFO:root:Found stack: {'name': 'portal-frontend', 'description': 'The Fucking Portal', 'render_file': 'portal_stack.yml', 'services': ['portal-frontend']}
INFO:root:Found stack: {'name': 'foundry', 'render_file': 'foundry_stack.yml', 'services': ['foundry']}
INFO:root:Found stack: {'name': 'mint', 'render_file': 'mint_stack.yml', 'services': ['mint']}
INFO:root:Found stack: {'name': 'scribe', 'render_file': 'scribe_stack.yml', 'services': ['scribe']}
INFO:root:Found service: {'name': 'aqa-reporting-site', 'depends': []}
INFO:root:Found service: {'name': 'billing', 'depends': ['core', 'portal-mysql']}
INFO:root:Found service: {'name': 'butler', 'depends': ['core']}
INFO:root:Found service: {'name': 'core', 'depends': ['ephemeral-resources']}
INFO:root:Found service: {'name': 'domino', 'depends': ['forge', 'portal-kafka', 'portal-mysql']}
INFO:root:Found service: {'name': 'dps-activation', 'depends': ['dps-kafka', 'dps-support', 'portal-mysql']}
INFO:root:Found service: {'name': 'dps-claim', 'depends': ['dps-kafka', 'dps-support', 'portal-mysql']}
INFO:root:Found service: {'name': 'dps-data-processing', 'depends': ['dps-activation', 'dps-support']}
INFO:root:Found service: {'name': 'dps-kafka', 'depends': ['core']}
INFO:root:Found service: {'name': 'dps-support', 'comment': 'Stuff needed to be set up for DPS stack components', 'depends': ['core', 'warden']}
INFO:root:Found service: {'name': 'docker-compose-files', 'depends': []}
INFO:root:Found service: {'name': 'ephemeral-resources', 'depends': []}
INFO:root:Found service: {'name': 'forge', 'depends': ['core']}
INFO:root:Found service: {'name': 'foundry', 'depends': ['portal-warden-loader', 'portal-kafka', 'portal-mysql', 'portal-mock', 'scribe']}
INFO:root:Found service: {'name': 'heimdall', 'depends': ['core', 'warden', 'portal-mysql']}
INFO:root:Found service: {'name': 'hub', 'depends': ['butler', 'foundry', 'portal-frontend', 'scribe']}
INFO:root:Found service: {'name': 'mint', 'depends': ['core', 'portal-kafka', 'portal-mock', 'portal-mysql']}
INFO:root:Found service: {'name': 'portal-deployer', 'depends': ['core', 'portal-discovery-loader', 'portal-kafka', 'portal-mysql', 'portal-warden-loader']}
INFO:root:Found service: {'name': 'portal-discovery-loader', 'depends': ['core']}
INFO:root:Found service: {'name': 'portal-frontend', 'depends': ['core', 'portal-discovery-loader', 'portal-kafka', 'portal-ldap', 'portal-mock', 'portal-mysql', 'portal-warden-loader', 'scribe']}
INFO:root:Found service: {'name': 'portal-kafka', 'depends': ['core', 'portal-discovery-loader']}
INFO:root:Found service: {'name': 'portal-ldap', 'depends': ['core']}
INFO:root:Found service: {'name': 'portal-mock', 'depends': ['core', 'portal-discovery-loader']}
INFO:root:Found service: {'name': 'portal-mysql', 'depends': ['core']}
INFO:root:Found service: {'name': 'portal-trebuchet', 'depends': ['core', 'dps-kafka', 'foundry', 'portal-mysql']}
INFO:root:Found service: {'name': 'portal-warden-loader', 'depends': ['warden']}
INFO:root:Found service: {'name': 'postbox', 'depends': ['core']}
INFO:root:Found service: {'name': 'rundeck', 'depends': ['core', 'docker-compose-files']}
INFO:root:Found service: {'name': 'scribe', 'depends': ['core', 'portal-kafka']}
INFO:root:Found service: {'name': 'test-automation', 'depends': []}
INFO:root:Found service: {'name': 'utilities', 'depends': []}
INFO:root:Found service: {'name': 'warden', 'depends': ['core', 'portal-ldap']}
INFO:root:Found 5 stack definitions and 32 service definitions
INFO:root:Generating file for stack butler
INFO:root:Found 1 services for stack butler
INFO:root:Resolving dependencies for stack butler
INFO:root:resolver(butler)
INFO:root:s:butler: ['core']
INFO:root:resolving dependencies for core
INFO:root:resolver(core)
INFO:root:s:core: ['ephemeral-resources']
INFO:root:resolving dependencies for ephemeral-resources
INFO:root:resolver(ephemeral-resources)
INFO:root:s:ephemeral-resources: []
INFO:root:resolver(core) items:['ephemeral-resources']
INFO:root:resolver(butler) items:['core', 'ephemeral-resources']
INFO:root:resulting services: ['butler', 'core', 'ephemeral-resources']
INFO:root: begin rendering services...
INFO:root:service: butler
INFO:root:service: core
INFO:root:service: ephemeral-resources
['docker-compose', ' -f butler.yml', ' -f core.yml', ' -f ephemeral-resources.yml', ' config', ' > /home/thein/Documents/stack/docker-compose-files/butler_stack.yml']
return value: 0
{
"deployments": [
{
"name": "dockerqa.lab",
"stacks": [
"portal-frontend"
],
"services": [
"aqa-reporting-site",
"foundry",
"portal-frontend",
"portal-deployer",
"rundeck",
"test-automation",
"utilities"
]
},
{
"name": "travis.lab",
"services": [
"portal-frontend"
]
}
],
"stacks": [
{
"name": "butler",
"render_file": "butler_stack.yml",
"services": [
"butler"
]
},
{
"name": "portal-frontend",
"description": "The Fucking Portal",
"render_file": "portal_stack.yml",
"services": [
"portal-frontend"
]
},
{
"name": "foundry",
"render_file": "foundry_stack.yml",
"services": [
"foundry"
]
},
{
"name": "mint",
"render_file": "mint_stack.yml",
"services": [
"mint"
]
},
{
"name": "scribe",
"render_file": "scribe_stack.yml",
"services": [
"scribe"
]
}
],
"services": [
{
"name": "aqa-reporting-site",
"depends": []
},
{
"name": "billing",
"depends": [
"core",
"portal-mysql"
]
},
{
"name": "butler",
"depends": [
"core"
]
},
{
"name": "core",
"depends": [
"ephemeral-resources"
]
},
{
"name": "domino",
"depends": [
"forge",
"portal-kafka",
"portal-mysql"
]
},
{
"name": "dps-activation",
"depends": [
"dps-kafka",
"dps-support",
"portal-mysql"
]
},
{
"name": "dps-claim",
"depends": [
"dps-kafka",
"dps-support",
"portal-mysql"
]
},
{
"name": "dps-data-processing",
"depends": [
"dps-activation",
"dps-support"
]
},
{
"name": "dps-kafka",
"depends": [
"core"
]
},
{
"name": "dps-support",
"comment": "Stuff needed to be set up for DPS stack components",
"depends": [
"core",
"warden"
]
},
{
"name": "docker-compose-files",
"depends": []
},
{
"name": "ephemeral-resources",
"depends": []
},
{
"name": "forge",
"depends": [
"core"
]
},
{
"name": "foundry",
"depends": [
"portal-warden-loader",
"portal-kafka",
"portal-mysql",
"portal-mock",
"scribe"
]
},
{
"name": "heimdall",
"depends": [
"core",
"warden",
"portal-mysql"
]
},
{
"name": "hub",
"depends": [
"butler",
"foundry",
"portal-frontend",
"scribe"
]
},
{
"name": "mint",
"depends": [
"core",
"portal-kafka",
"portal-mock",
"portal-mysql"
]
},
{
"name": "portal-deployer",
"depends": [
"core",
"portal-discovery-loader",
"portal-kafka",
"portal-mysql",
"portal-warden-loader"
]
},
{
"name": "portal-discovery-loader",
"depends": [
"core"
]
},
{
"name": "portal-frontend",
"depends": [
"core",
"portal-discovery-loader",
"portal-kafka",
"portal-ldap",
"portal-mock",
"portal-mysql",
"portal-warden-loader",
"scribe"
]
},
{
"name": "portal-kafka",
"depends": [
"core",
"portal-discovery-loader"
]
},
{
"name": "portal-ldap",
"depends": [
"core"
]
},
{
"name": "portal-mock",
"depends": [
"core",
"portal-discovery-loader"
]
},
{
"name": "portal-mysql",
"depends": [
"core"
]
},
{
"name": "portal-trebuchet",
"depends": [
"core",
"dps-kafka",
"foundry",
"portal-mysql"
]
},
{
"name": "portal-warden-loader",
"depends": [
"warden"
]
},
{
"name": "postbox",
"depends": [
"core"
]
},
{
"name": "rundeck",
"depends": [
"core",
"docker-compose-files"
]
},
{
"name": "scribe",
"depends": [
"core",
"portal-kafka"
]
},
{
"name": "test-automation",
"depends": []
},
{
"name": "utilities",
"depends": []
},
{
"name": "warden",
"depends": [
"core",
"portal-ldap"
]
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment