de 你是否也曾遇到过这些窘境?
如果这些场景让你感同身受,那么,是时候拥有一个属于你自己的、托管在云端的开发环境了。
今天,我们将带你利用腾讯云云托管(CloudBase Run),仅需几步,就能搭建一个功能完整、按需付费、永不掉线的code-server
(即网页版 VS Code)。
适用场景:适用于临时性的远程开发需求,或者无法安装VS Code的设备(如 iPad), 用户都可以通过浏览器访问服务,进行代码开发。
成果展示
无论你身在何处,使用任何设备,只需打开浏览器,就能立刻进入你所熟悉的、配置齐全的开发环境。当你休息时,它会自动休眠,不产生任何费用。
解决方案:云托管 + 对象存储 = 弹性计算 + 持久化存储
我们将使用一个强大的组合来构建这个云端 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、登录 https://tcb.cloud.tencent.com/dev 进入云托管页面。
2、点击“新建服务”,选择通过公开 Git 仓库部署。
3、填写以下信息:
仓库地址:https://github.com/TencentCloudBase/awesome-cloudbase-examples
仓库分支: main
端口: 8080
目标目录:cloudbaserun/deploy-code-server
4.点击“创建并部署”。稍等片刻,云托管就会为你构建并部署好 code-server
。部署完成后,通过服务详情页中的默认域名即可访问。
提示: 示例通过环境变量
PASSWORD
设置了访问密码,你可以在“服务配置”->“环境变量”中修改为你自己的密码,重新部署后生效。
至此,你已经拥有了一个可以工作的云端 VS Code!但这还不够,因为一旦服务重启,你的刚刚编辑的代码就会丢失。接下来,让我们为它加上持久化存储。
第二步:引入对象存储 COS,保障“万无一失”
1. 准备你的“数据仓库” - COS
<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
, 更新服务重新部署后会自动生效。
3.部署完成后,再次访问你的云端 IDE。你会发现,底部状态栏多了一个 rclone
的工具图标。
现在,你编辑完代码后,点击这个rclone:push
,你的所有代码都会被安全地同步到你的 COS 存储桶中!同时,你也可以点击rclone:pull
,将 COS 中的代码同步到你的工作区。
总结
云托管不仅仅是一个容器平台,它更是现代应用开发的加速器。无论你是个人开发者、初创团队,还是企业,都可以通过云托管快速构建、部署和扩展你的应用。 我们的方案体现了云托管的核心优势:
1.极致的成本效益:你的 IDE 只在你使用时才计费。对于个人开发者或偶尔使用的场景,成本几乎可以忽略不计。没有闲置,就没有浪费。
2.免运维的简单:你只需提供代码/镜像,从服务器配置、安全补丁到负载均衡、弹性伸缩,云托管为你搞定一切。
3.强大的生态联动:轻松地将对象存储 COS 集成进来,解决了持久化问题。
附录
# 使用 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 设计哲学:将计算与状态分离。
通过这种分离,我们构建的应用更加健壮、更具弹性,也更符合云原生时代的架构思想。
本文分享自 腾讯云开发CloudBase 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!