code-server可以在浏览器中打开VS Code
我们通过Docker来部署code-server,通过nginx进行代理访问
Docker部署code-server
这是完整的docker-compose.yaml
version: "3.8"
x-app: &common
restart: on-failure:3
logging:
driver: "json-file"
options:
max-size: "200k"
max-file: "10"
network_mode: bridge
services:
code-server:
<<: *common
image: linuxserver/code-server:amd64-latest
container_name: code-server
environment:
PUID: 1000
# 非root用户使用docker需要加入docker(998)组: $(getent group docker | cut -d: -f3)
PGID: 998
TZ: Asia/Shanghai
PASSWORD: '' # 访问密码
# HASHED_PASSWORD: #optional
SUDO_PASSWORD: '' # sudo密码
# SUDO_PASSWORD_HASH: #optional
PROXY_DOMAIN: 'example.com' # 端口自动代理域名
VSCODE_PROXY_URI: http://{{port}}.example.com/ # 避免https无法访问
DEFAULT_WORKSPACE: /config/workspace # 默认工作空间
# 设置扩展市场 https://coder.com/docs/code-server/latest/FAQ#how-do-i-use-my-own-extensions-marketplace
# EXTENSIONS_GALLERY: '{"serviceUrl": "https://open-vsx.org/vscode/gallery"}'
volumes:
- /opt/docker-data/code-server/config:/config
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/var/run/docker.sock # 在code-server中使用docker
ports:
- 8443:8443
healthcheck:
test: [ "CMD-SHELL", "curl -sSf 127.0.0.1:8443/healthz" ]
interval: 10s
timeout: 10s
retries: 10
注意:
- 如果需要在code-server中访问docker,则需要将环境变量
PGID
设置为宿主机的docker
的组id,可通过命令查询getent group docker | cut -d: -f3
。然后添加卷映射:/var/run/docker.sock:/var/run/docker.sock
- code-server在运行时会自动转发本地端口到指定的域名,需要通过环境变量
PROXY_DOMAIN
指定代理的域名 - 代理地址默认为
https://{{port}}.{{PROXY_DOMAIN}}/
,如果没有启用https
,则可通过环境变量VSCODE_PROXY_URI
进行配置 - code-server使用Open-VSX扩展库,部分VS Code扩展在市场中不可见。可通过环境变量使用第三方扩展库:
EXTENSIONS_GALLERY='{"serviceUrl": "https://my-extensions/api"}'
。但因原生的扩展市场是闭源的,微软禁止第三方使用该扩展市场。服务条款 /confg
目录为用户HOME
目录,由于我们只映射了该目录,若容器重新创建,则全局安装的软件和配置会丢失。所有需要重用的软件都需要进行本地安装到/config/.local/bin
目录。
安装SDK
我编写了一个bash脚本以安装需要的SDK,可以做个参考
docker exec -it code-server bash -c "curl -fsSL https://liwt.top/script/code-server-init.sh | bash"