Accessing multiple hosted applications in one Workspace session

Overview


For security reasons, Domino Workspace sessions are only accessible on one port. For example, Jupyter typically uses port 8888. When you launch a Jupyter Workspace session, a Domino executor starts the Jupyter server in a Run, and opens port 8888 to serve the Jupyter application to your browser. If you were to attempt to use the Jupyter terminal to start another application on a different port, it would not be accessible.

However, in some cases you may want to run multiple interactive applications in the same Workspace session. These cases include:

  • Editing and debugging Dash or Flask apps live
  • Using Tensorboard to view progress of a live training job

Domino 3.5+ supports this with Jupyter Server Proxy and JupyterLab.

 

Environment Prerequisites

  • Python 3+
  • Jupyter Server Proxy

Jupyter Server Proxy is installed by default in the latest Domino Standard Environments. To install it in one of your existing environments, see the instructions below.

 

Installing Jupyter Server Proxy in your environment


If you are not on the recent version of theDomino Standard Environments , you can install Jupyter Server Proxy in your Domino environment, follow these steps. If you are on a recent Environment, you can skip these steps. 

 

1. Add the following lines to your environment's Dockerfile Instructions.

# Install NodeJS
# You can omit this step if your environment already has NodeJS 6+ installed
RUN curl -sL https://deb.nodesource.com/setup_8.x | bash - && \
apt-get install nodejs -y && \
rm -rf /var/lib/apt/lists/*

# Switch to the latest JupyterLab start script
RUN rm -rf /var/opt/workspaces/Jupyterlab/start.sh && \
cd /var/opt/workspaces/Jupyterlab/ && \
wget https://raw.githubusercontent.com/dominodatalab/workspace-configs/2019q2-v1.3/Jupyterlab/start.sh && \
chmod 777 /var/opt/workspaces/Jupyterlab/start.sh

# Install and enable jupyter-server-proxy
RUN pip install --upgrade jupyterlab==0.35.4 && \
pip install nbserverproxy jupyter-server-proxy && \
jupyter serverextension enable --py --sys-prefix nbserverproxy && \
jupyter labextension install jupyterlab-server-proxy


2. Update the JupyterLab definition in the Pluggable Workspace Tools section of your environment.

jupyterlab:
  title: "JupyterLab (Beta)"
  iconUrl: "https://raw.githubusercontent.com/dominodatalab/workspace-configs/develop/workspace-logos/jupyterlab.svg?sanitize=true"
  start: [ /var/opt/workspaces/Jupyterlab/start.sh ]
  httpProxy:
  internalPath: "/{{#if pathToOpen}}/lab/tree/{{pathToOpen}}{{/if}}"
  port: 8888
  rewrite: false

 

 

Using Jupyter Server Proxy


If you launch a JupyterLab Workspace session in an environment with Jupyter Server Proxy installed, you can start and serve additional applications as long as they are served on a different port than JupyterLab itself.

Once an additional application is started, you can access it at the following URI:

<workspace id>-workspace.<host name>/proxy/<port>

Suppose your JupyterLab session is served at:

https://app.dominodatalab.com/workspace?owner=chuckhead&projectName=demo&runId=5cef31de46e0fb00083f9708

You can then use the JupyterLab terminal to start a Dash app on port 8887 for debugging. You can then open the Dash app at:

https://5cef31de46e0fb00083f9708-workspace.app.dominodatalab.com/proxy/8887/

The slash at the end of the URL is necessary for the app to load properly.

 

mceclip0.png

 

mceclip1.png

 

Once your app is running, if you edit its source files in JupyterLab, when you refresh the app in your browser the edits will take effect.

For environments that have VSCode installed within JupyterLab, it's possible to start a VSCode session from JupyterLab, and then start an App from VSCode. This will allow you to debug using VSCode.

Note that any new App or process you start and open in a separate tab will not have the Domino Workspace UI, with options to stop, sync, commit, or manage your project files. To access this UI and manage your changes, you must open the main JupyterLab tab for your Workspace session.

 

 

Was this article helpful?
0 out of 0 found this helpful