diff --git a/Dockerfile b/Dockerfile index 392e1dd9..bc5b4150 100644 --- a/Dockerfile +++ b/Dockerfile @@ -15,7 +15,7 @@ FROM python:3.8-buster AS python-builder WORKDIR /usr/src RUN pip install --upgrade pip setuptools -RUN pip install --progress-bar off PyMySQL[rsa] psycopg2-binary +RUN pip install --progress-bar off PyMySQL[rsa] psycopg2-binary gunicorn ADD ./setup.cfg /usr/src/setup.cfg ADD ./setup.py /usr/src/setup.py @@ -32,5 +32,5 @@ RUN mkdir /app WORKDIR /app EXPOSE 8080 -ENTRYPOINT ["optuna-dashboard", "--port", "8080", "--host", "0.0.0.0"] +ENTRYPOINT ["optuna-dashboard", "--port", "8080", "--host", "0.0.0.0", "--server", "gunicorn"] diff --git a/README.md b/README.md index 8f4865cf..48651652 100644 --- a/README.md +++ b/README.md @@ -43,11 +43,13 @@ positional arguments: storage DB URL (e.g. sqlite:///example.db) optional arguments: - -h, --help show this help message and exit - --port PORT port number (default: 8080) - --host HOST hostname (default: 127.0.0.1) - --version, -v show program's version number and exit - --quiet, -q quiet + -h, --help show this help message and exit + --port PORT port number (default: 8080) + --host HOST hostname (default: 127.0.0.1) + --server {wsgiref,gunicorn} + server (default: wsgiref) + --version, -v show program's version number and exit + --quiet, -q quiet ``` diff --git a/optuna_dashboard/cli.py b/optuna_dashboard/cli.py index 146b3218..08dcd1e1 100644 --- a/optuna_dashboard/cli.py +++ b/optuna_dashboard/cli.py @@ -11,6 +11,7 @@ from .app import create_app AUTO_RELOAD = os.environ.get("OPTUNA_DASHBOARD_AUTO_RELOAD") == "1" +SERVER_CHOICES = ["wsgiref", "gunicorn"] def main() -> None: @@ -22,6 +23,9 @@ def main() -> None: parser.add_argument( "--host", help="hostname (default: %(default)s)", default="127.0.0.1" ) + parser.add_argument( + "--server", help="server (default: %(default)s)", default="wsgiref", choices=SERVER_CHOICES + ) parser.add_argument("--version", "-v", action="version", version=__version__) parser.add_argument("--quiet", "-q", help="quiet", action="store_true") args = parser.parse_args() @@ -33,7 +37,7 @@ def main() -> None: storage = RDBStorage(args.storage) app = create_app(storage) - run(app, host=args.host, port=args.port, quiet=args.quiet, reloader=AUTO_RELOAD) + run(app, host=args.host, port=args.port, server=args.server, quiet=args.quiet, reloader=AUTO_RELOAD) if __name__ == "__main__":