diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..f00347b --- /dev/null +++ b/Dockerfile @@ -0,0 +1,15 @@ +FROM python:2-slim + +ENV PYTHONUNBUFFERED 1 + +RUN apt-get update && apt-get install -y git + +RUN git clone https://github.com/mrname/tasktiger-admin.git + +WORKDIR tasktiger-admin + +RUN python setup.py install + +EXPOSE 5000 + +CMD ["tasktiger-admin", "-i", "0.0.0.0"] diff --git a/setup.py b/setup.py index 67ead36..237566b 100644 --- a/setup.py +++ b/setup.py @@ -18,6 +18,7 @@ ], install_requires=[ 'click', + 'dsnparse', 'flask-admin', 'redis', 'structlog', diff --git a/tasktiger_admin/utils.py b/tasktiger_admin/utils.py index d0a8f11..4765880 100644 --- a/tasktiger_admin/utils.py +++ b/tasktiger_admin/utils.py @@ -1,4 +1,7 @@ +import os + import click +import dsnparse from flask import Flask from flask_admin import Admin import redis @@ -15,9 +18,15 @@ @click.option('-i', '--interface', help='Admin interface to listen on', default='127.0.0.1') def run_admin(host, port, db, password, listen, interface): + environ_dsn = os.environ.get('REDIS_URL', None) + if environ_dsn: + dsn_parsed = dsnparse.parse(environ_dsn) + host = host or dsn_parsed.host + port = port or dsn_parsed.port + password = dsn_parsed.password conn = redis.Redis(host, int(port or 6379), int(db or 0), password) tiger = TaskTiger(setup_structlog=True, connection=conn) app = Flask(__name__) admin = Admin(app, url='/') admin.add_view(TaskTigerView(tiger, name='TaskTiger', endpoint='tasktiger')) - app.run(debug=True, port=int(listen or 5000), host=interface) + app.run(debug=False, port=int(listen or 5000), host=interface)