Skip to main content

Gitpod WebIDE 离线插件安装

构建步骤

使用BuildKit构建docker镜像,主要是为了用--mount参数做构建时挂载,省了往容器里面复制文件。

# syntax=docker/dockerfile:1.7
FROM gitpod/openvscode-server:latest

ENV OPENVSCODE_SERVER_ROOT="/home/.openvscode-server"
ENV OPENVSCODE="${OPENVSCODE_SERVER_ROOT}/bin/openvscode-server"
SHELL ["/bin/bash","-c"]

# 构建时把本地 offline_plugins/ 挂载为只读;安装完不留痕
RUN --mount=type=bind,source=offline_plugins,target=/opt/offline_plugins,readonly \
set -euo pipefail; \
count=0; \
while IFS= read -r -d '' f; do \
echo "Installing $f"; \
"$OPENVSCODE" --install-extension "$f" --force; \
count=$((count+1)); \
done < <(find /opt/offline_plugins -type f -name '*.vsix' -print0); \
test "$count" -gt 0 || { echo >&2 "No .vsix found"; exit 1; }

在Dockerfile文件同级目录中创建offline_plugins目录,把下载好的插件离线包.vsix文件放进去。

执行构建

docker buildx build --build-arg https_proxy="http://10.100.1.7:10080" -t demo/vscode:latest .

--build-arg参数可以不用传入。

下载插件离线安装包

在VSCode中搜索到要下载的插件,在插件上点击右键下载 示例

Eclipse Open VSX是一个开源的vscode插件仓库,这里也可以下载到各种插件的离线包。

启动容器

docker run -it --user root --rm --name code-server -p 3000:3000 -v /DATA/disk4/webide:/home/devel:cached demo/vscode:latest

启动容器时,一定不要映射容器内的/home/workspace/目录到宿主机目录

猜测是因为这个目录中保存了插件信息,如果把这个目录映射到宿主机的目录,启动后会找不到已经安装的插件,同时启动过程中会有错误日志输出。

容器启动时,必须使用--user root指定高权限的用户,否则会导致在VSCode中无法创建文件和目录。

上述示例中的Python插件,如果没有在VSCode中指定interpreter(Python解析器),插件不会生效。