You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by ya...@apache.org on 2025/07/16 10:21:09 UTC
(airavata) branch master updated (787ea01f0f -> e74729c0bb)
This is an automated email from the ASF dual-hosted git repository.
yasith pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/airavata.git
from 787ea01f0f set credential.store.server.host to localhost in application.properties
new 38173a16ba cleanup research-hub scripts, move git clone step to post-init phase.
new e74729c0bb increase dockerspawner timeout for large repos. fix host path for dataset bind mounts.
The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.../research-hub/{compose => }/Dockerfile | 13 ++---
.../research-hub/compose/user-container/Dockerfile | 13 -----
.../compose/user-container/bootstrap.sh | 1 -
.../compose/user-container/build-container.sh | 2 -
.../{compose => }/custom_templates/login.html | 0
.../research-hub/{compose => }/docker-compose.yaml | 6 +--
.../{compose => }/jupyterhub_config.py | 56 ++++++++++------------
.../research-hub/user-container/Dockerfile | 12 +++++
.../research-hub/user-container/Makefile | 3 ++
.../{compose => }/user-container/init.sh | 0
10 files changed, 47 insertions(+), 59 deletions(-)
rename modules/research-framework/research-hub/{compose => }/Dockerfile (53%)
delete mode 100644 modules/research-framework/research-hub/compose/user-container/Dockerfile
delete mode 100644 modules/research-framework/research-hub/compose/user-container/bootstrap.sh
delete mode 100755 modules/research-framework/research-hub/compose/user-container/build-container.sh
rename modules/research-framework/research-hub/{compose => }/custom_templates/login.html (100%)
rename modules/research-framework/research-hub/{compose => }/docker-compose.yaml (81%)
rename modules/research-framework/research-hub/{compose => }/jupyterhub_config.py (75%)
create mode 100644 modules/research-framework/research-hub/user-container/Dockerfile
create mode 100755 modules/research-framework/research-hub/user-container/Makefile
rename modules/research-framework/research-hub/{compose => }/user-container/init.sh (100%)
(airavata) 02/02: increase dockerspawner timeout for large repos. fix host path for dataset bind mounts.
Posted by ya...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
yasith pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/airavata.git
commit e74729c0bbc76c7b22acddd46f8e23030ad2800d
Author: yasithdev <ya...@icloud.com>
AuthorDate: Wed Jul 16 05:20:55 2025 -0500
increase dockerspawner timeout for large repos. fix host path for dataset bind mounts.
---
modules/research-framework/research-hub/jupyterhub_config.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/modules/research-framework/research-hub/jupyterhub_config.py b/modules/research-framework/research-hub/jupyterhub_config.py
index 23f288949b..ec39584752 100644
--- a/modules/research-framework/research-hub/jupyterhub_config.py
+++ b/modules/research-framework/research-hub/jupyterhub_config.py
@@ -70,7 +70,7 @@ class CustomDockerSpawner(DockerSpawner):
# register given datasets as volumes (ro)
for subfolder in data_subfolders:
- host_data_path = os.path.expandvars(f"$HOME/mnt/{subfolder}")
+ host_data_path = f"/mnt/{subfolder}"
container_path = f"/cybershuttle_data/{subfolder}"
self.volumes[host_data_path] = {
'bind': container_path,
@@ -86,6 +86,7 @@ c.JupyterHub.named_server_limit_per_user = 10
c.JupyterHub.spawner_class = CustomDockerSpawner
c.DockerSpawner.notebook_dir = '/home/jovyan/work'
c.DockerSpawner.default_url = "/lab"
+c.DockerSpawner.start_timeout = 600
c.DockerSpawner.environment = {
'CHOWN_HOME': 'no',
(airavata) 01/02: cleanup research-hub scripts, move git clone step to post-init phase.
Posted by ya...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
yasith pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/airavata.git
commit 38173a16bad64457bf861f9bea12ba9eb844c478
Author: yasithdev <ya...@icloud.com>
AuthorDate: Wed Jul 16 04:25:40 2025 -0500
cleanup research-hub scripts, move git clone step to post-init phase.
---
.../research-hub/{compose => }/Dockerfile | 13 ++---
.../research-hub/compose/user-container/Dockerfile | 13 -----
.../compose/user-container/bootstrap.sh | 1 -
.../compose/user-container/build-container.sh | 2 -
.../{compose => }/custom_templates/login.html | 0
.../research-hub/{compose => }/docker-compose.yaml | 6 +--
.../{compose => }/jupyterhub_config.py | 55 ++++++++++------------
.../research-hub/user-container/Dockerfile | 12 +++++
.../research-hub/user-container/Makefile | 3 ++
.../{compose => }/user-container/init.sh | 0
10 files changed, 46 insertions(+), 59 deletions(-)
diff --git a/modules/research-framework/research-hub/compose/Dockerfile b/modules/research-framework/research-hub/Dockerfile
similarity index 53%
rename from modules/research-framework/research-hub/compose/Dockerfile
rename to modules/research-framework/research-hub/Dockerfile
index 16acfa9aae..d0f9300781 100644
--- a/modules/research-framework/research-hub/compose/Dockerfile
+++ b/modules/research-framework/research-hub/Dockerfile
@@ -1,18 +1,11 @@
-FROM jupyterhub/jupyterhub:3.0
-
-RUN pip install oauthenticator requests pyjwt dockerspawner jupyterhub-idle-culler
-RUN apt-get update && \
- apt-get install -y git && \
- pip install oauthenticator requests pyjwt dockerspawner jupyterhub-idle-culler ipywidgets
+FROM jupyterhub/jupyterhub:latest
+RUN apt-get update && apt-get install -y git && rm -rf /var/lib/apt/lists/*
+RUN pip install oauthenticator requests pyjwt dockerspawner jupyterhub-idle-culler ipywidgets
COPY jupyterhub_config.py /srv/jupyterhub/jupyterhub_config.py
-
COPY custom_templates /srv/jupyterhub/custom_templates
-RUN mkdir -p /home/jovyan/notebooks && \
- chown -R 1000:100 /home/jovyan/notebooks
-
ENV JUPYTERHUB_CONFIG=/srv/jupyterhub/jupyterhub_config.py
ENV PYTHONPATH=/srv/jupyterhub
diff --git a/modules/research-framework/research-hub/compose/user-container/Dockerfile b/modules/research-framework/research-hub/compose/user-container/Dockerfile
deleted file mode 100644
index 9a193e0dd5..0000000000
--- a/modules/research-framework/research-hub/compose/user-container/Dockerfile
+++ /dev/null
@@ -1,13 +0,0 @@
-FROM jupyter/base-notebook:latest
-
-COPY init.sh /usr/local/bin/init.sh
-
-USER root
-RUN chmod +x /usr/local/bin/init.sh
-RUN apt-get update && apt-get install -y git
-
-USER $NB_USER
-RUN pip install ipywidgets jupyterlab-git
-
-ENTRYPOINT ["/usr/local/bin/init.sh"]
-CMD ["start-notebook.py"]
\ No newline at end of file
diff --git a/modules/research-framework/research-hub/compose/user-container/bootstrap.sh b/modules/research-framework/research-hub/compose/user-container/bootstrap.sh
deleted file mode 100644
index b4ae3f6ed5..0000000000
--- a/modules/research-framework/research-hub/compose/user-container/bootstrap.sh
+++ /dev/null
@@ -1 +0,0 @@
-jupyter lab --config=/jupyter_lab_config.py --ip=0.0.0.0 --port=8888 --no-browser --allow-root --NotebookApp.token=''
\ No newline at end of file
diff --git a/modules/research-framework/research-hub/compose/user-container/build-container.sh b/modules/research-framework/research-hub/compose/user-container/build-container.sh
deleted file mode 100755
index 4270dc6676..0000000000
--- a/modules/research-framework/research-hub/compose/user-container/build-container.sh
+++ /dev/null
@@ -1,2 +0,0 @@
-docker build --platform linux/x86_64 -t cybershuttle/jupyterlab-base .
-docker push cybershuttle/jupyterlab-base
\ No newline at end of file
diff --git a/modules/research-framework/research-hub/compose/custom_templates/login.html b/modules/research-framework/research-hub/custom_templates/login.html
similarity index 100%
rename from modules/research-framework/research-hub/compose/custom_templates/login.html
rename to modules/research-framework/research-hub/custom_templates/login.html
diff --git a/modules/research-framework/research-hub/compose/docker-compose.yaml b/modules/research-framework/research-hub/docker-compose.yaml
similarity index 81%
rename from modules/research-framework/research-hub/compose/docker-compose.yaml
rename to modules/research-framework/research-hub/docker-compose.yaml
index a8a5c66400..568cf97028 100644
--- a/modules/research-framework/research-hub/compose/docker-compose.yaml
+++ b/modules/research-framework/research-hub/docker-compose.yaml
@@ -1,10 +1,9 @@
-version: "3.8"
services:
jupyterhub:
build: .
- container_name: jupyterhub-sample
+ container_name: jupyterhub
ports:
- - "8000:8000"
+ - "8000:20000"
environment:
OAUTH_CLIENT_ID: "cs-jupyterlab"
OAUTH_CLIENT_SECRET: "DxeMtfiWU1qkDEmaGHf13RDahCujzhy1"
@@ -14,6 +13,7 @@ services:
volumes:
- ./jupyterlab:/home/jovyan
- ./jupyterhub_config.py:/srv/jupyterhub/jupyterhub_config.py
+ - ./custom_templates:/srv/jupyterhub/custom_templates
- /var/run/docker.sock:/var/run/docker.sock
restart: always
networks:
diff --git a/modules/research-framework/research-hub/compose/jupyterhub_config.py b/modules/research-framework/research-hub/jupyterhub_config.py
similarity index 75%
rename from modules/research-framework/research-hub/compose/jupyterhub_config.py
rename to modules/research-framework/research-hub/jupyterhub_config.py
index aff309a301..23f288949b 100644
--- a/modules/research-framework/research-hub/compose/jupyterhub_config.py
+++ b/modules/research-framework/research-hub/jupyterhub_config.py
@@ -3,6 +3,9 @@ import re
import sys
from dockerspawner import DockerSpawner
from oauthenticator.generic import GenericOAuthenticator
+from traitlets.config import Config
+
+c: Config
# Authenticator Configuration
c.JupyterHub.authenticator_class = GenericOAuthenticator
@@ -48,39 +51,31 @@ class CustomDockerSpawner(DockerSpawner):
# Create a unique volume name keyed by (username + servername).
# If the user spawns again with the same (servername), it will reuse the same volume.
safe_user = self.sanitize_name(self.user.name)
- safe_srv = self.sanitize_name(self.name) or "default"
-
- volumes_dict = {}
-
- git_url = self.user_options.get("git")
+ safe_srv = self.sanitize_name(self.name or "default")
+ reference_git_url = "https://github.com/cyber-shuttle/cybershuttle-reference.git"
+ git_url = self.user_options.get("git") or reference_git_url
data_subfolders = self.user_options.get("dataPath", [])
print("THE DATA PATH IS: ", data_subfolders)
- if git_url or data_subfolders:
- vol_name = f"jupyterhub-vol-{safe_user}-{safe_srv}"
- volumes_dict[vol_name] = "/home/jovyan/work"
-
- # If one or more data subfolders are provided, mount them all read-only.
- for subfolder in data_subfolders:
- host_data_path = os.path.expandvars("$HOME/mnt/{subfolder}")
- container_path = f"/cybershuttle_data/{subfolder}"
- volumes_dict[host_data_path] = {
- 'bind': container_path,
- 'mode': 'ro'
- }
- self.image = "cybershuttle/jupyterlab-base" # TODO using ENV variable
- else:
- # Sample mode
- vol_name = f"jupyterhub-vol-{safe_user}-default-jupyterlab-base"
- volumes_dict[vol_name] = "/home/jovyan/work"
- self.image = "cybershuttle/jupyterlab-base-sample" # TODO using ENV variable
-
- self.volumes = volumes_dict
-
- if git_url:
- if not hasattr(self, "environment"):
- self.environment = {}
- self.environment["GIT_URL"] = git_url
+ self.image = "cybershuttle/jupyterlab-base"
+ if not hasattr(self, "environment"):
+ self.environment = {}
+ self.environment["GIT_URL"] = git_url
+ self.post_start_cmd = "/usr/local/bin/init.sh"
+ self.volumes = {}
+
+ # register the home directory as volume (rw)
+ vol_name = f"jupyterhub-vol-{safe_user}-{safe_srv}"
+ self.volumes[vol_name] = "/home/jovyan/work"
+
+ # register given datasets as volumes (ro)
+ for subfolder in data_subfolders:
+ host_data_path = os.path.expandvars(f"$HOME/mnt/{subfolder}")
+ container_path = f"/cybershuttle_data/{subfolder}"
+ self.volumes[host_data_path] = {
+ 'bind': container_path,
+ 'mode': 'ro'
+ }
return await super().start()
diff --git a/modules/research-framework/research-hub/user-container/Dockerfile b/modules/research-framework/research-hub/user-container/Dockerfile
new file mode 100644
index 0000000000..26bf413f90
--- /dev/null
+++ b/modules/research-framework/research-hub/user-container/Dockerfile
@@ -0,0 +1,12 @@
+FROM quay.io/jupyter/base-notebook:latest
+
+COPY init.sh /usr/local/bin/init.sh
+
+USER root
+RUN chmod +x /usr/local/bin/init.sh
+RUN apt-get update && apt-get install -y git && rm -rf /var/lib/apt/lists/*
+
+USER $NB_USER
+RUN pip install ipywidgets jupyterlab-git
+
+CMD ["start-notebook.py"]
\ No newline at end of file
diff --git a/modules/research-framework/research-hub/user-container/Makefile b/modules/research-framework/research-hub/user-container/Makefile
new file mode 100755
index 0000000000..4f74d1c5f0
--- /dev/null
+++ b/modules/research-framework/research-hub/user-container/Makefile
@@ -0,0 +1,3 @@
+deploy:
+ docker build --platform linux/x86_64 -t cybershuttle/jupyterlab-base . && \
+ docker push cybershuttle/jupyterlab-base
\ No newline at end of file
diff --git a/modules/research-framework/research-hub/compose/user-container/init.sh b/modules/research-framework/research-hub/user-container/init.sh
similarity index 100%
rename from modules/research-framework/research-hub/compose/user-container/init.sh
rename to modules/research-framework/research-hub/user-container/init.sh