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 \
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解析器),插件不会生效。