forked from cerc-io/stack-orchestrator
Merge pull request #154 from cerc-io/dboreham/port-command
Implement deploy-system port command
This commit is contained in:
commit
208df97c96
@ -3,3 +3,5 @@ services:
|
||||
test:
|
||||
image: cerc/test-container:local
|
||||
restart: always
|
||||
ports:
|
||||
- "80"
|
||||
|
@ -1,4 +1,11 @@
|
||||
FROM alpine:latest
|
||||
FROM ubuntu:latest
|
||||
|
||||
RUN apt-get update && export DEBIAN_FRONTEND=noninteractive && export DEBCONF_NOWARNINGS="yes" && \
|
||||
apt-get install -y software-properties-common && \
|
||||
apt-get install -y nginx && \
|
||||
apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
||||
|
||||
EXPOSE 80
|
||||
|
||||
COPY run.sh /app/run.sh
|
||||
|
||||
|
@ -12,5 +12,5 @@ else
|
||||
echo `date` > $EXISTSFILENAME
|
||||
fi
|
||||
|
||||
# Sleep forever to keep docker happy
|
||||
while true; do sleep 10; done
|
||||
# Run nginx which will block here forever
|
||||
/usr/sbin/nginx -g "daemon off;"
|
||||
|
3
app/data/stacks/test/README.md
Normal file
3
app/data/stacks/test/README.md
Normal file
@ -0,0 +1,3 @@
|
||||
# Test Stack
|
||||
|
||||
A stack for test/demo purposes.
|
7
app/data/stacks/test/stack.yml
Normal file
7
app/data/stacks/test/stack.yml
Normal file
@ -0,0 +1,7 @@
|
||||
version: "1.0"
|
||||
name: test
|
||||
description: "A test stack"
|
||||
containers:
|
||||
- cerc/test-container
|
||||
pods:
|
||||
- test
|
@ -30,9 +30,9 @@ from .util import include_exclude_check, get_parsed_stack_config
|
||||
@click.option("--exclude", help="don\'t start these components")
|
||||
@click.option("--cluster", help="specify a non-default cluster name")
|
||||
@click.argument('command', required=True) # help: command: up|down|ps
|
||||
@click.argument('services', nargs=-1) # help: command: up|down|ps <service1> <service2>
|
||||
@click.argument('extra_args', nargs=-1) # help: command: up|down|ps <service1> <service2>
|
||||
@click.pass_context
|
||||
def command(ctx, include, exclude, cluster, command, services):
|
||||
def command(ctx, include, exclude, cluster, command, extra_args):
|
||||
'''deploy a stack'''
|
||||
|
||||
# TODO: implement option exclusion and command value constraint lost with the move from argparse to click
|
||||
@ -87,17 +87,27 @@ def command(ctx, include, exclude, cluster, command, services):
|
||||
# See: https://gabrieldemarmiesse.github.io/python-on-whales/sub-commands/compose/
|
||||
docker = DockerClient(compose_files=compose_files, compose_project_name=cluster)
|
||||
|
||||
services_list = list(services) or None
|
||||
extra_args_list = list(extra_args) or None
|
||||
|
||||
if not dry_run:
|
||||
if command == "up":
|
||||
if verbose:
|
||||
print(f"Running compose up for services: {services_list}")
|
||||
docker.compose.up(detach=True, services=services_list)
|
||||
print(f"Running compose up for extra_args: {extra_args_list}")
|
||||
docker.compose.up(detach=True, services=extra_args_list)
|
||||
elif command == "down":
|
||||
if verbose:
|
||||
print("Running compose down")
|
||||
docker.compose.down()
|
||||
elif command == "port":
|
||||
if extra_args_list is None or len(extra_args_list) < 2:
|
||||
print("Usage: port <service> <exposed-port>")
|
||||
sys.exit(1)
|
||||
service_name = extra_args_list[0]
|
||||
exposed_port = extra_args_list[1]
|
||||
if verbose:
|
||||
print("Running compose port")
|
||||
mapped_port_data = docker.compose.port(service_name, exposed_port)
|
||||
print(f"{mapped_port_data[0]}:{mapped_port_data[1]}")
|
||||
elif command == "ps":
|
||||
if verbose:
|
||||
print("Running compose ps")
|
||||
|
Loading…
Reference in New Issue
Block a user