Docker部署Coder Code-Server后Jupyter Notebook无法正常显示
Coder Code-Server部署后Jupyter Notebook单元格不显示问题
我通过docker-compose.yml部署了Coder Code-Server,但遇到VS Code中Jupyter Notebook无法正常使用的问题:左侧大纲可查看到单元格存在,但界面上无任何单元格显示,无法进行编辑或运行操作。
docker-compose.yml配置片段(基于官方示例)
# VS Code Server coder: image: ghcr.io/coder/coder:latest ports: - "7080:7080" environment: CODER_PG_CONNECTION_URL: "postgresql://${POSTGRES_USER:-username}:${POSTGRES_PASSWORD:-password}@database/${POSTGRES_DB:-coder}?sslmode=disable" CODER_ADDRESS: "0.0.0.0:7080" CODER_ACCESS_URL: "http://mydomain:7080" group_add: - "134" volumes: - /var/run/docker.sock:/var/run/docker.sock depends_on: database: condition: service_healthy database: image: "postgres:14.2" ports: - "5433:5432" environment: POSTGRES_USER: ${POSTGRES_USER:-username} # The PostgreSQL user (useful to connect to the database) POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-password} # The PostgreSQL password (useful to connect to the database) POSTGRES_DB: ${POSTGRES_DB:-coder} # The PostgreSQL default database (automatically created at first launch) volumes: - coder_data:/var/lib/postgresql/data healthcheck: test: [ "CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-username} -d ${POSTGRES_DB:-coder}", ] interval: 5s timeout: 5s retries: 5
Coder工作区模板配置
terraform { required_providers { coder = { source = "coder/coder" version = "0.6.10" } docker = { source = "kreuzwerker/docker" version = "~> 2.20.2" } } } data "coder_provisioner" "me" { } provider "docker" { } data "coder_workspace" "me" { } resource "coder_agent" "main" { arch = data.coder_provisioner.me.arch os = "linux" login_before_ready = false startup_script_timeout = 180 startup_script = <<-EOT set -e # install and start code-server curl -fsSL https://code-server.dev/install.sh | sh -s -- --method=standalone --prefix=/tmp/code-server --version 4.8.3 /tmp/code-server/bin/code-server --auth none --port 13337 >/tmp/code-server.log 2>&1 & EOT } resource "coder_app" "code-server" { agent_id = coder_agent.main.id slug = "code-server" display_name = "code-server" url = "http://localhost:13337/?folder=/home/${data.coder_workspace.me.owner}" icon = "/icon/code.svg" subdomain = false share = "owner" healthcheck { url = "http://localhost:13337/healthz" interval = 3 threshold = 10 } } variable "docker_image" { description = "What Docker image would you like to use for your workspace?" default = "base" # List of images available for the user to choose from. # Delete this condition to give users free text input. validation { condition = contains(["base", "java", "node", "ptr"], var.docker_image) error_message = "Invalid Docker image!" } # Prevents admin errors when the image is not found validation { condition = fileexists("images/${var.docker_image}.Dockerfile") error_message = "Invalid Docker image. The file does not exist in the images directory." } } resource "docker_volume" "home_volume" { name = "coder-${data.coder_workspace.me.owner}-home" # Protect the volume from being deleted due to changes in attributes. lifecycle { ignore_changes = all } # Add labels in Docker to keep track of orphan resources. labels { label = "coder.owner" value = data.coder_workspace.me.owner } labels { label = "coder.owner_id" value = data.coder_workspace.me.owner_id } labels { label = "coder.workspace_id" value = data.coder_workspace.me.id } # This field becomes outdated if the workspace is renamed but can # be useful for debugging or cleaning out dangling volumes. labels { label = "coder.workspace_name_at_creation" value = data.coder_workspace.me.name } } resource "docker_volume" "pubmed_embeddings_data" { name = "pubmed_embeddings_data" # Protect the volume from being deleted due to changes in attributes. lifecycle { ignore_changes = all } # Add labels in Docker to keep track of orphan resources. labels { label = "coder.owner" value = data.coder_workspace.me.owner } labels { label = "coder.owner_id" value = data.coder_workspace.me.owner_id } labels { label = "coder.workspace_id" value = data.coder_workspace.me.id } # This field becomes outdated if the workspace is renamed but can # be useful for debugging or cleaning out dangling volumes. labels { label = "coder.workspace_name_at_creation" value = data.coder_workspace.me.name } } resource "docker_volume" "shared_coder_data" { name = "shared_coder_data" # Protect the volume from being deleted due to changes in attributes. lifecycle { ignore_changes = all } # Add labels in Docker to keep track of orphan resources. labels { label = "coder.owner" value = data.coder_workspace.me.owner } labels { label = "coder.owner_id" value = data.coder_workspace.me.owner_id } labels { label = "coder.workspace_id" value = data.coder_workspace.me.id } # This field becomes outdated if the workspace is renamed but can # be useful for debugging or cleaning out dangling volumes. labels { label = "coder.workspace_name_at_creation" value = data.coder_workspace.me.name } } resource "docker_image" "coder_image" { name = "coder-base-${data.coder_workspace.me.owner}-${lower(data.coder_workspace.me.name)}" build { path = "./images/" dockerfile = "${var.docker_image}.Dockerfile" tag = ["coder-${var.docker_image}:v0.2"] } # Keep alive for other workspaces to use upon deletion keep_locally = true } resource "docker_container" "workspace" { count = data.coder_workspace.me.start_count image = docker_image.coder_image.latest # Uses lower() to avoid Docker restriction on container names. name = "coder-${data.coder_workspace.me.owner}-${lower(data.coder_workspace.me.name)}" # Hostname makes the shell more user friendly: coder@my-workspace:~$ hostname = data.coder_workspace.me.name # Use the docker gateway if the access URL is 127.0.0.1 entrypoint = ["sh", "-c", replace(coder_agent.main.init_script, "/localhost|127\\.0\\.0\\.1/", "host.docker.internal")] env = ["CODER_AGENT_TOKEN=${coder_agent.main.token}"] host { host = "host.docker.internal" ip = "host-gateway" } volumes { container_path = "/home/${data.coder_workspace.me.owner}/" volume_name = docker_volume.home_volume.name read_only = false } # Add labels in Docker to keep track of orphan resources. labels { label = "coder.owner" value = data.coder_workspace.me.owner } labels { label = "coder.owner_id" value = data.coder_workspace.me.owner_id } labels { label = "coder.workspace_id" value = data.coder_workspace.me.id } labels { label = "coder.workspace_name" value = data.coder_workspace.me.name } } resource "coder_metadata" "container_info" { count = data.coder_workspace.me.start_count resource_id = docker_container.workspace[0].id item { key = "image" value = var.docker_image } }
我已经尝试过官方仓库中两个相关Issue里提到的配置调整方案,但均未解决该问题。
内容的提问来源于stack exchange,提问作者Kim Tang
相关产品推荐
相关产品推荐

