/
compose.py
executable file
·75 lines (66 loc) · 2.62 KB
/
compose.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
"""
Docker-compose management commands.
:copyright: (c) 2016 Pinn
:license: All rights reserved
"""
import click
import subprocess
@click.command()
@click.option('--ecs', is_flag=True)
@click.option('--volumes', is_flag=True)
@click.option('--images', is_flag=True)
def clean(ecs, volumes, images):
"""Subprocess python shell."""
click.secho('+\n++\n+++ Shutting down docker-compose...', fg='white')
call = ['docker-compose', '-f', 'dock/docker-compose.yml', '-p', 'multi']
call.append('down')
subprocess.call(call)
# Remove images created from docker-compose up
click.secho('+\n++\n+++ Removing images from project...', fg='white')
if ecs or images:
call = ['docker', 'rmi']
if ecs:
call.append('ecr-repository-number.dkr.ecr.us-west-1.amazonaws.com/runner')
call.append('ecr-repository-number.dkr.ecr.us-west-1.amazonaws.com/worker')
call.append('ecr-repository-number.dkr.ecr.us-west-1.amazonaws.com/nginx')
call.append('ecr-repository-number.dkr.ecr.us-west-1.amazonaws.com/rabbit')
if images:
call.extend(['multi_nginx', 'multi_runner', 'multi_worker', 'multi_rabbit'])
subprocess.call(call)
if volumes:
p = subprocess.Popen(['docker', 'volume', 'ls', '-q', '-f', 'dangling=true'],
stdout=subprocess.PIPE)
out, err = p.communicate()
call = ['docker', 'volume', 'rm']
call.extend(out.split())
subprocess.call(call)
choices = ['build', 'bundle', 'config', 'create', 'down', 'events', 'exec', 'help', 'kill', 'logs']
choices.extend(['pause', 'post', 'ps', 'pull', 'push', 'restart', 'rm', 'run', 'scale', 'start'])
choices.extend(['stop', 'unpause', 'up', 'version'])
@click.command()
@click.option('--build', is_flag=True)
@click.option('--detach', is_flag=True)
@click.option('--recreate', is_flag=True)
@click.option('--ecs', is_flag=True)
@click.argument('args')
def compose(args, build, recreate, detach, ecs):
"""Subprocess python shell."""
if ecs:
call = ['docker-compose', '-f', 'dock/ecs-compose.yml', '-p', 'multi']
else:
call = ['docker-compose', '-f', 'dock/docker-compose.yml', '-p', 'multi']
if args in choices:
click.secho('docker-compose {}'.format(args))
call.append(args)
if detach:
call.append('-d')
if build:
call.append('--build')
if recreate:
call.append('--force-recreate')
else:
click.secho('\nCompose command is not available see:\n')
call.append('--help')
subprocess.call(call)
if __name__ == '__main__':
compose()