手把手教程:用腾讯云新平台搞定专属开发环境,永久免费薅羊毛!

最近腾讯推出了一个全新的云原生开发平台,官方提供了力度非常大的福利,可以免费长期(可以说是永久)获得云端算力资源,用作个人开发机。

提供的算力额度几乎用不完,完全可以用作自己的远程开发机。

另外最近官网还推出了一系列活动,最普通都能够获得非常长时间的云原生开发时长,基本上相当于是免费提供了一台开发机器。

本文将以实操方式,带大家用 Dockerfile 定制专属于自己的开发环境镜像,帮助你在 CNB 平台上快速创建理想的云原生开发环境。

首先当然是打开官网:cnb.cool/,注册一个自己的账号。

然后创建一个自己的组织来管理我们自己的代码仓库。

本篇文章我从自己作为开发者的角度出发,带大家搭建一个属于自己的云原生开发环境。

介绍

本文默认你已经对 Docker 及 Dockerfile 有一定的了解,因为整个定制和部署流程都是基于 Docker 技术实现的。

接下来就进入正题,开始定制属于自己的开发容器。

下图展示了一个自定义开发环境,我这里以使用 UV 启动的 Python 环境为例:

因为使用了 VSCode 的端口转发能力, 还能够直接使用 localhost 直接进行访问,如下图所示。

如果你觉得这还不够,cnb 还提供了 http 服务的代理域名供你直接通过公网来访问。

通过以下命令,可以在控制台查看分配的公网代理域名:

bash 复制代码
printenv | grep CNB_VSCODE_PROXY_URI

将给出的 https://dsu6886yor-{{port}}.cnb.run 这个公网地址当中的 {{port}} 替换成我们自己应用的端口即可。如下图所示,也是非常方便。

动手定制

创建环境配置

在了解了 Dockerfile 的前提下,我直接使用 debian:bookworm-slim 这个镜像来作为开发的基础镜像,在此之上我会添加一些我自己开发需要使用到的内容。

上面的 Python 开发环境完整的 Dockerfile 文件如下,包含的环境有 UVNVMZSH,配置参照配置文件随意构建自己的开发环境。

Dockerfile 复制代码
FROM debian:bookworm-slim

WORKDIR /root

# 安装常用工具
RUN sed -i 's@deb.debian.org@mirrors.cloud.tencent.com@g' /etc/apt/sources.list.d/debian.sources &&\
    apt-get update && \
    apt-get install -y curl wget unzip lsof nload htop net-tools dnsutils openssh-server zsh && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

# 安装 VSCode
RUN curl -fsSL https://code-server.dev/install.sh | sh \
    && code-server --install-extension mikestead.dotenv \
    && code-server --install-extension dbaeumer.vscode-eslint \
    && code-server --install-extension esbenp.prettier-vscode \
    && code-server --install-extension usernamehw.errorlens \
    && code-server --install-extension streetsidesoftware.code-spell-checker \
    && code-server --install-extension kisstkondoros.vscode-gutter-preview \
    && code-server --install-extension oderwat.indent-rainbow \
    && code-server --install-extension EditorConfig.EditorConfig \
    && code-server --install-extension ms-python.python \
    && code-server --install-extension ms-python.debugpy \
    && echo done

# 安装 zsh
RUN sh -c "$(wget -O- https://github.com/deluan/zsh-in-docker/releases/download/v1.2.1/zsh-in-docker.sh)" -- \
    -t https://github.com/denysdovhan/spaceship-prompt \
    -a 'SPACESHIP_PROMPT_ADD_NEWLINE="false"' \
    -a 'SPACESHIP_PROMPT_SEPARATE_LINE="false"' \
    -a 'SPACESHIP_PROMPT_ORDER=(conda dir git node package docker venv exec_time line_sep char)' \
    -p git \
    -p ssh-agent \
    -p https://github.com/zsh-users/zsh-autosuggestions \
    -p https://github.com/zsh-users/zsh-completions \
    chsh -s /bin/zsh root

# 把 Git 的 editor 设置为 vscode
RUN git config --global core.editor "code --wait"

# 安装 Python 的 UV 包管理器
RUN curl -LsSf https://astral.sh/uv/install.sh | sh

# 安装 nvm 和 Node.js(LTS 版本)
ENV NVM_DIR=/root/.nvm
RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash \
    && . "$NVM_DIR/nvm.sh" \
    && nvm install --lts \
    && nvm use --lts \
    && nvm alias default 'lts/*'

# 配置 nvm 环境变量(zsh/bash 都能用)
RUN echo 'export NVM_DIR="$HOME/.nvm"' >> /root/.zshrc \
    && echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"' >> /root/.zshrc \
    && echo 'export NVM_DIR="$HOME/.nvm"' >> /root/.bashrc \
    && echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"' >> /root/.bashrc

RUN  echo 'exec zsh' >> /root/.bashrc

ENV LC_ALL zh_CN.UTF-8
ENV LANG zh_CN.UTF-8
ENV LANGUAGE zh_CN.UTF-8

CMD [ "/bin/zsh" ]

有了上面的 Dockerfile 文件以后,我们可以把它构建成容器放在 cnb 上,方便新的项目直接使用它作为开发环境。

在本地创建一个文件夹,并且创建对应的文件。具体的文件结构如下图所示。

目录树如下:

tree 复制代码
├── .cnb.yml
└── python-dev
    ├── build.sh
    └── Dockerfile

在文件夹的根目录当中创建一个 .cnb.yaml 文件和一个 python-dev 的目录,这个目录可以任意取名字,后面的脚本当中注意同步修改即可。

.cnb.yaml 文件的具体内容如下:

yaml 复制代码
main: 
  push: 
    - services:
        - docker
      stages:
        - name: build image
          jobs:
            - name: build python-dev
              script: |
                cd python-dev
                bash build.sh

这个文件描述了一个具体的构建任务,当仓库的 main 分支有新的推送时,就会进入到仓库的 python-dev 这个目录当中,执行 build.sh 这个脚本文件。

这种定制构建任务的文档可以参考官方的文档:docs.cnb.cool/zh/build/in...

build.sh 文件具体内容如下:

bash 复制代码
#!/bin/bash

docker build --no-cache -t ${CNB_DOCKER_REGISTRY}/${CNB_REPO_SLUG_LOWERCASE}/python-dev .

docker push ${CNB_DOCKER_REGISTRY}/${CNB_REPO_SLUG_LOWERCASE}/python-dev

这个文件的作用就是构建开发环境的镜像,然后将开发环境的镜像推送到 cnb 上。

Dockerfile 的内容就直接使用上面的 python 的开发环境的内容,直接复制进去就行。

构建

有了上面的配置文件之后,接下来去 cnb.cool/ 上创建一个公开的仓库,一定要是公开的仓库,私有仓库构建出来的镜像没办法在其他仓库引用。

接下来直接把上面的文件夹提交到仓库当中。

整个过程如下图所示:

提交到仓库之后可以取到仓库的云原生构建界面进行查看已经生成了镜像的构建任务,接下来等待镜像构建完成。

构建任务完成之后,切换到制品菜单栏,可以看到成功构建出来的容器镜像。

接下来我们就是使用这个镜像作为我们其他项目的开发环境了,直接在项目的根目录下创建一个 .cnb.yaml,然后直接依赖自己的其他仓库的镜像。

可以参考这个代码仓库:cnb.cool/mwlabs.tech...

如下图所示,引用构建出来的开发环境镜像即可。

然后就可以开心的进行远程开发了,点击仓库的云原生开发,。

可以选择在线的 WebIDE 或者 VScode/Cursor 进行远程开发,一般直接使用 VSCode/Cursor 。

然后就可以畅快的体验专属自己的开发环境了,引用自己的云原生开发镜像,可以自己去设置 CPU 和 GPU 的参数,想要多大可以都可以参考文档来自己设置。

详细的直接参考官方文档即可:docs.cnb.cool/zh/workspac...

到这里就成功的定制了一个专属自己的云原生开发环境镜像,往后在只要使用 cnb.cool 来托管自己的代码就可以使用自己的云原生开发环境镜像。

相关推荐
啃火龙果的兔子6 分钟前
解决 Node.js 托管 React 静态资源的跨域问题
前端·react.js·前端框架
ttyyttemo24 分钟前
Compose生命周期---Lifecycle of composables
前端
以身入局29 分钟前
FragmentManager 之 addToBackStack 作用
前端·面试
sophie旭30 分钟前
《深入浅出react》总结之 10.7 scheduler 异步调度原理
前端·react.js·源码
练习前端两年半31 分钟前
Vue3 源码深度剖析:有状态组件的渲染机制与生命周期实现
前端·vue.js
大胖猫L31 分钟前
深搜与广搜在 TypeScript 类型递归中的应用
前端·算法
泉城老铁32 分钟前
Spring Boot 对接阿里云 OSS 的详细步骤和流程
java·后端·程序员
吃饭睡觉打豆豆嘛32 分钟前
彻底搞懂前端路由:从 Hash 到 History 的演进与实践
前端·javascript
俞凡33 分钟前
[大厂实践] Netflix 分布式计数器抽象
架构
蛋仔聊测试35 分钟前
基于 Playwright(python) 的前端性能测试脚本实现
前端·python