Add support for subdomain in jupyterlab module

pull/316/head
framctr 9 months ago
parent 8a0ac3435c
commit 13b60da6bc

@ -9,6 +9,9 @@ terraform {
} }
} }
data "coder_workspace" "me" {}
data "coder_workspace_owner" "me" {}
# Add required variables for your modules and remove any unneeded variables # Add required variables for your modules and remove any unneeded variables
variable "agent_id" { variable "agent_id" {
type = string type = string
@ -36,6 +39,12 @@ variable "share" {
} }
} }
variable "subdomain" {
type = bool
description = "Determines whether JupyterLab will be accessed via it's own subdomain or whether it will be accessed via a path on Coder."
default = true
}
variable "order" { variable "order" {
type = number type = number
description = "The order determines the position of app in the UI presentation. The lowest order is shown first and apps with equal order are sorted by name (ascending order)." description = "The order determines the position of app in the UI presentation. The lowest order is shown first and apps with equal order are sorted by name (ascending order)."
@ -49,17 +58,27 @@ resource "coder_script" "jupyterlab" {
script = templatefile("${path.module}/run.sh", { script = templatefile("${path.module}/run.sh", {
LOG_PATH : var.log_path, LOG_PATH : var.log_path,
PORT : var.port PORT : var.port
BASE_URL : var.subdomain ? "http://localhost:${var.port}/@${data.coder_workspace_owner.me.name}/${data.coder_workspace.me.name}/apps/jupyterlab" : ""
}) })
run_on_start = true run_on_start = true
} }
resource "coder_app" "jupyterlab" { resource "coder_app" "jupyterlab" {
agent_id = var.agent_id agent_id = var.agent_id
slug = "jupyterlab" slug = "jupyterlab" # sync with with end of subdomain URL
display_name = "JupyterLab" display_name = "JupyterLab"
url = "http://localhost:${var.port}" url = var.subdomain ? "http://localhost:${var.port}/@${data.coder_workspace_owner.me.name}/${data.coder_workspace.me.name}/apps/jupyterlab" : "http://localhost:${var.port}"
icon = "/icon/jupyter.svg" icon = "/icon/jupyter.svg"
subdomain = true subdomain = var.subdomain
share = var.share share = var.share
order = var.order order = var.order
}
dynamic "healthcheck" {
for_each = var.subdomain ? toset([true]) : toset([])
content {
url = "http://localhost:${var.port}/@${data.coder_workspace_owner.me.name}/${data.coder_workspace.me.name}/apps/jupyterlab"
interval = 6
threshold = 10
}
}
}

@ -1,5 +1,10 @@
#!/usr/bin/env sh #!/usr/bin/env sh
if [ -n "$BASE_URL" ]
then
BASE_URL="--ServerApp.base_url=${BASE_URL}"
fi
BOLD='\033[0;1m' BOLD='\033[0;1m'
printf "$${BOLD}Installing jupyterlab!\n" printf "$${BOLD}Installing jupyterlab!\n"
@ -15,11 +20,17 @@ if ! command -v jupyterlab > /dev/null 2>&1; then
fi fi
# install jupyterlab # install jupyterlab
pipx install -q jupyterlab pipx install -q jupyterlab
echo "🥳 jupyterlab has been installed\n\n" printf "%s\n\n" "🥳 jupyterlab has been installed"
else else
echo "🥳 jupyterlab is already installed\n\n" printf "%s\n\n" "🥳 jupyterlab is already installed"
fi fi
echo "👷 Starting jupyterlab in background..." echo "👷 Starting jupyterlab in background..."
echo "check logs at ${LOG_PATH}" echo "check logs at ${LOG_PATH}"
$HOME/.local/bin/jupyter-lab --ServerApp.ip='0.0.0.0' --ServerApp.port=${PORT} --no-browser --ServerApp.token='' --ServerApp.password='' > ${LOG_PATH} 2>&1 & $HOME/.local/bin/jupyter-lab --no-browser \
"$BASE_URL" \
--ServerApp.ip='*' \
--ServerApp.port="${PORT}" \
--ServerApp.token='' \
--ServerApp.password='' \
> "${LOG_PATH}" 2>&1 &
Loading…
Cancel
Save