Skip to content
This repository was archived by the owner on May 15, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 22 additions & 4 deletions jupyterlab/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -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
variable "agent_id" {
type = string
Expand Down Expand Up @@ -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."
Comment thread
matifali marked this conversation as resolved.
Outdated
default = true
}

variable "order" {
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)."
Expand All @@ -49,17 +58,26 @@ resource "coder_script" "jupyterlab" {
script = templatefile("${path.module}/run.sh", {
LOG_PATH : var.log_path,
PORT : var.port
BASE_URL : var.subdomain ? "http://localhost:${var.port}/@${data.coder_workspace_owner.me.name}/${data.coder_workspace.me.name}/apps/jupyterlab" : ""
Comment thread
matifali marked this conversation as resolved.
Outdated
Comment thread
matifali marked this conversation as resolved.
Outdated
})
run_on_start = true
}

resource "coder_app" "jupyterlab" {
agent_id = var.agent_id
slug = "jupyterlab"
slug = "jupyterlab" # sync with with end of subdomain URL
Comment thread
framctr marked this conversation as resolved.
Outdated
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}"
Comment thread
matifali marked this conversation as resolved.
Outdated
icon = "/icon/jupyter.svg"
subdomain = true
subdomain = var.subdomain
share = var.share
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
}
}
Comment thread
matifali marked this conversation as resolved.
Outdated
Comment thread
matifali marked this conversation as resolved.
Outdated
4 changes: 2 additions & 2 deletions jupyterlab/run.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

if [ -n "$BASE_URL" ]
Comment thread
framctr marked this conversation as resolved.
Outdated
then
BASE_URL="ServerApp.base_url=${BASE_URL}"
BASE_URL="--ServerApp.base_url=${BASE_URL}"
fi

BOLD='\033[0;1m'
Expand All @@ -28,7 +28,7 @@ fi
echo "👷 Starting jupyterlab in background..."
echo "check logs at ${LOG_PATH}"
Comment thread
framctr marked this conversation as resolved.
Outdated
$HOME/.local/bin/jupyter-lab --no-browser \
--ServerApp.base_url="${BASE_URL}" \
"$BASE_URL" \
--ServerApp.ip='*' \
--ServerApp.port="${PORT}" \
--ServerApp.token='' \
Expand Down