Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

README.md

将你的 VS Code 搬上云端:用云托管打造一个按需付费、永不掉线的云端开发环境

你是否也曾遇到过这些窘境?

  • 换了一台电脑,繁琐的开发环境要重新配置一遍,耗时耗力。
  • 想在 iPad 或轻薄本上随时随地写代码,却发现性能孱弱,力不从心。
  • 本地项目依赖太多,把本地环境搞得一团糟。

如果这些场景让你感同身受,那么,是时候拥有一个属于你自己的、托管在云端的开发环境了。今天,我们将带你利用腾讯云云托管(CloudBase Run),仅需几步,就能搭建一个功能完整、按需付费、永不掉线的 code-server(即网页版 VS Code)。

成果展示

无论你身在何处,使用任何设备,只需打开浏览器,就能立刻进入你所熟悉的、配置齐全的开发环境。当你休息时,它会自动休眠,不产生任何费用。

最终效果展示

解决方案:云托管 + 对象存储 = 弹性计算 + 持久化存储

我们将使用一个强大的组合来构建这个云端 IDE:

  • 计算核心 - 云托管 (CloudBase Run): 它将运行我们的 code-server 应用。我们无需关心服务器、运维和扩缩容,云托管会根据访问流量自动启动服务,并在空闲时将其缩容到 0,实现极致的成本效益。
  • 持久化存储 - 对象存储 (COS): 云托管是无状态的,这意味着容器重启后数据会丢失。这正是 Serverless 的设计哲学!我们将使用对象存储 COS 来保存我们的代码和工作区配置,使其“万无一失”。
  • 连接的桥梁 - rclone: 一个强大的云存储同步工具,无缝连接我们的云托管容器和对象存储 COS。

架构与流程

在深入操作之前,让我们先花一分钟理解它的工作原理。

架构图

流程解析:

  1. 用户访问: 你通过浏览器访问云托管提供的默认域名。
  2. IDE 体验: code-server 在容器内运行,你可以在浏览器中获得与本地 VS Code 完全一致的编码体验。
  3. 代码同步: 当你点击 rclone 同步按钮时,容器内的 rclone 工具会将你的工作区目录(例如 /home/coder/project)完整地同步到对象存储 COS 的指定存储桶中。
  4. 服务休眠: 当你停止访问一段时间后,云托管会自动将服务缩容至 0,停止计费。你的代码已安全地保存在 COS 中。
  5. 服务唤醒: 云托管接收到请求,如果当前没有运行的实例(已缩容至 0),它会快速自动拉起一个 code-server 容器实例来处理你的请求。

实战演练:三步构建你的云端 IDE

准备好了吗?让我们开始动手吧!

第一步:快速部署

云托管的魅力在于其极简的部署体验。我们已经为你准备好了包含 code-server 的 Git 仓库,你只需点击几下鼠标。

  1. 登录 云开发控制台,进入云托管页面。

  2. 点击“新建服务”,选择通过公开 Git 仓库部署

  3. 填写以下信息:

    • 仓库地址: https://github.com/TencentCloudBase/awesome-cloudbase-examples.git
    • 仓库分支: main
    • 端口: 8080
    • 目标目录: cloudbaserun/deploy-code-server

    部署 code-server

  4. 点击“创建并部署”。稍等片刻,云托管就会为你构建并部署好 code-server。部署完成后,通过服务详情页中的默认域名即可访问。

提示: 示例通过环境变量 PASSWORD 设置了访问密码,你可以在“服务配置”->“环境变量”中修改为你自己的密码,重新部署后生效。

至此,你已经拥有了一个可以工作的云端 VS Code!但这还不够,因为一旦服务重启,你的刚刚编辑的代码就会丢失。接下来,让我们为它加上持久化存储。

第二步:引入对象存储 COS,让代码“万无一失”

1. 准备你的“数据仓库” - COS

  • 前往 腾讯云对象存储控制台,创建一个新的存储桶 (Bucket)。记住你选择的地域 (Region),例如“上海”,后续会用到。 创建 COS 存储桶
  • 前往 访问管理 CAM 控制台 获取你的 API 密钥 <your-secret-id><your-secret-key>。这是让 rclone 有权限访问你存储桶的凭证。

2. 配置“搬运工” - rclone

云托管中的 code-server 可以通过 rclone 读写 COS 中的代码文件。配置 rclone 最优雅的方式是将配置信息作为环境变量注入到服务中。

  • 在你的本地电脑上,安装并配置 rclone。(安装步骤见附录)

  • 运行配置命令,它会引导你创建一份连接到腾讯云 COS 的配置。

    rclone config
    

    在引导过程中,选择新建一个远程连接 (n),命名为 cos (或其他你喜欢的名字),选择存储类型为 S3,提供商选择 TencentCOS,然后填入你的 <your-secret-id><your-secret-key> 和存储桶所在的地域对应的 endpoint(例如上海地域是 cos.ap-shanghai.myqcloud.com)。

    或者你可以一次性完成配置

    rclone config create cos s3 \
        provider=TencentCOS \
        env_auth=false \
        access_key_id=<your-secret-id> \
        secret_access_key=<your-secret-key> \
        endpoint=cos.ap-shanghai.myqcloud.com \
        acl=default \
        storage_class=STANDARD
    

    验证 rclone 是否配置成功

    rclone ls cos:<some-path-in-bucket>
    
  • 导出并加密配置 配置完成后,rclone 会将信息保存在一个本地文件中。我们需要读取它并用 Base64 编码,以便安全地作为环境变量传递。

    # 这条命令会找到 rclone 配置文件,读取它,并将其内容进行 Base64 编码后输出到终端
    cat $(rclone config file | sed -n 2p) | base64 --wrap=0
    

    复制输出的这一长串 Base64 字符串。

第三步:生态联动,完成最终配置

现在,让我们回到云托管控制台,将所有东西串联起来。

  1. 进入你刚刚创建的 code-server 服务的详情页,选择“更新服务”。

  2. 在“环境变量”配置中,添加新的环境变量:

    • RCLONE_DATA: 粘贴你上一步复制的 Base64 字符串。
    • RCLONE_REMOTE_NAME: 在上一步中配置的 rclone 远程连接名称,例如 cos
    • RCLONE_DESTINATION: 在上一步新建的存储桶的名称。

    配置 rclone 环境变量

    我们部署的代码会自动检测这些环境变量,并配置好 rclone, 更新服务重新部署后会自动生效。

  3. 部署完成后,再次访问你的云端 IDE。你会发现,底部状态栏多了一个 rclone 的工具图标。

    rclone 工具已就绪

现在,你编辑完代码后,点击这个rclone:push,你的所有代码都会被安全地同步到你的 COS 存储桶中!同时,你也可以点击rclone:pull,将 COS 中的代码同步到你的工作区。

总结

云托管不仅仅是一个容器平台,它更是现代应用开发的加速器。无论你是个人开发者、初创团队,还是企业,都可以通过云托管快速构建、部署和扩展你的应用。 我们的方案体现了云托管的核心优势:

  1. 极致的成本效益: 你的 IDE 只在你使用时才计费。对于个人开发者或偶尔使用的场景,成本几乎可以忽略不计。没有闲置,就没有浪费。
  2. 免运维的简单: 你只需提供代码/镜像,从服务器配置、安全补丁到负载均衡、弹性伸缩,云托管为你搞定一切。
  3. 强大的生态联动: 轻松地将对象存储 COS 集成进来,解决了持久化问题。

附录

安装 rclone

# 使用 curl 下载 rclone
curl -O https://downloads.rclone.org/v1.70.2/rclone-v1.70.2-linux-amd64.zip
# 如果官方地址下载太慢,可以使用云托管提供的下载链接
curl -O https://tcb.cloud.tencent.com/cloudrun-tech-blog-images/web-ide/rclone-v1.70.2-linux-amd64.zip

unzip rclone-v1.70.2-linux-amd64.zip
sudo cp rclone-v1.70.2-linux-amd64/rclone /usr/bin/
sudo chmod 755 /usr/bin/rclone

# 验证 rclone 是否安装成功
rclone --version

“无状态”的云托管

云托管实践 Serverless 设计哲学:将计算与状态分离

  • 无状态的计算层 (云托管): 负责处理逻辑。因为无状态,所以可以被随意复制、销毁和移动,从而实现快速的弹性伸缩和故障恢复。
  • 有状态的数据层 (COS/DB): 负责存储数据。它们是高可用、高可靠的专业服务。

通过这种分离,我们构建的应用更加健壮、更具弹性,也更符合云原生时代的架构思想。