diff --git a/app/app.py b/app/app.py index 604849e09dcb66adf48675d9192e00f9ea6828e1..b43ae3ac69e2d41ac5bf45446abf5d36aa5d7996 100644 --- a/app/app.py +++ b/app/app.py @@ -4,13 +4,25 @@ sys.path.append("/home/jovyan/") import argparse import logging +from urllib.parse import urlparse, urljoin + from dash import Dash +from jupyter_server.serverapp import list_running_servers + from layout import layout from callbacks import register_callbacks logging.basicConfig(level=logging.INFO) +# weird trick to find base_url for the jupyterlab +def find_jupyterlab_base_url(): + servers = list_running_servers() + for server in servers: + if server["port"] == 8888: + return server['url'] + return None + # get the correct port from proxy parser = argparse.ArgumentParser() @@ -23,10 +35,19 @@ if not port: else: logging.debug(f"Dash app running on port {port}.") + +base_url = find_jupyterlab_base_url() +if base_url is None: + raise ValueError("Base URL of Jupyterlab could not be detected.") +logging.debug(f"Base URL: {base_url}") + +proxy_base_path = urlparse(urljoin(base_url + "/", f"proxy/{port}/")).path +logging.debug(f"Proxy base path: {proxy_base_path}") + # define Dash app app = Dash( name=__name__, - requests_pathname_prefix="/Dash/" + requests_pathname_prefix=proxy_base_path ) # define layout @@ -39,6 +60,6 @@ register_callbacks(app=app) app.run( jupyter_mode="jupyterlab", port=port, - host="localhost", + host="0.0.0.0", debug=True )