feat(jupyterlab): add support for `subdomain=false` (#316)

Co-authored-by: Muhammad Atif Ali <atif@coder.com>
Co-authored-by: Asher <ash@coder.com>
pull/308/merge
framctr 6 months ago committed by GitHub
parent 7992d9d265
commit 1b147ae90d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -16,7 +16,7 @@ A module that adds JupyterLab in your Coder template.
```tf ```tf
module "jupyterlab" { module "jupyterlab" {
source = "registry.coder.com/modules/jupyterlab/coder" source = "registry.coder.com/modules/jupyterlab/coder"
version = "1.0.19" version = "1.0.22"
agent_id = coder_agent.example.id agent_id = coder_agent.example.id
} }
``` ```

@ -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 its 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,18 @@ 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 ? "" : "/@${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 the usage in URL
display_name = "JupyterLab" display_name = "JupyterLab"
url = "http://localhost:${var.port}" url = var.subdomain ? "http://localhost:${var.port}" : "http://localhost:${var.port}/@${data.coder_workspace_owner.me.name}/${data.coder_workspace.me.name}/apps/jupyterlab"
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
} }

@ -1,5 +1,9 @@
#!/usr/bin/env sh #!/usr/bin/env sh
if [ -n "${BASE_URL}" ]; then
BASE_URL_FLAG="--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 +19,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..." printf "👷 Starting jupyterlab in background..."
echo "check logs at ${LOG_PATH}" printf "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_FLAG" \
--ServerApp.ip='*' \
--ServerApp.port="${PORT}" \
--ServerApp.token='' \
--ServerApp.password='' \
> "${LOG_PATH}" 2>&1 &

Loading…
Cancel
Save