云原生构建CNB使用教程:手把手教你学会使用_cnb.cool
开始之前,我们先来简单了解一下什么是CNB呢?官方说法是CNB 致力于实现“一切皆代码云原生构建”,它利用 Docker 生态对环境、缓存、插件等进行抽象,通过声明式的语法,帮助开发者以更酷的方式构建软件。其主要特点包括声明式语法、资源池化、高效的构建环境与缓存管理、Docker 作为运行环境、基于 Docker 生态的插件以及按需快速获取资源等。总结起来就是可以提供高效且灵活的软件开发环境,管理代码。话不多说,下面我们直接开始。
一:准备工作
先来看一下我们需要准备那些东西。
1.注册一个CNB 账号
具体操作:打开 CNB 官方网站 https://cnb.cool/。
点击网站右上角的“登录/注册”按钮。如果没有账号,选择“注册”选项,按照提示填写相关信息,如用户名、邮箱、密码等,完成注册流程。也可以用微信,这个过程还需要实名制,我是直接微信关联登录的。
注册成功后,使用就可以账号和密码登录 CNB 平台。
2.本地安装Docker
由于这个CNB 大量依赖 Docker 技术,我们还需要在本地已安装 Docker,并且 Docker 服务正在运行。如果没有,可以从 Docker 官方网站下载并安装适合操作系统的 Docker 版本。这里可以看下我之前写的这篇文章,写了如何进行docker安装和使用的:
https://blog.csdn.net/weixin_43578304/article/details/135645504?spm=1011.2415.3001.5331
3.本地安装Git
这个就不必多说了吧?基本都会。。。要是不会,那再百度学一学。。。
ok,有上面这3个,基本就可以开始进行下一步了。
二:在CNB创建项目
我们登录 CNB 平台后,进入项目管理页面。
点击“创建项目”按钮,在弹出的对话框中填写项目名称、描述等相关信息。
选择项目类型,CNB 支持多种类型的项目,如 Node.js、Python、Java 等,根据您的项目需求进行选择。
点击“创建”按钮,完成项目的创建。有项目的也可以远程关联迁移,向下面这样
三:配置项目环境
进入刚刚创建的项目页面,在项目配置区域,可以对项目的构建环境进行声明。例如,我们以 Node.js 项目为例,来试一试,可以声明 Node.js 的版本:
这里我们需要简单学一下yalm的相关语法,还是比较简单的。
在项目中的.cnb.yml文件里面添加下面代码
main: push: - docker: image: node:18 stages: - node -v - npm install - npm test
像上面这样配置的意思就是,我使用 Node.js 18 版本的 Docker 镜像作为项目的构建环境;执行 node -v 命令查看 Node.js 版本,然后执行 npm install 安装项目依赖,最后执行 npm test 运行测试。
是不是很简单?比如我再来一个使用Python 3.6 版本构建项目,并开启缓存,就像下面这样:
main: push: - docker: image: python:3.6 volumes: - node_modules: copy-on-write
再比如我平时比较常用go语言,项目运行就可以一键配置好。比如我想 Go 项目需要先编译,然后运行测试,最后构建 Docker 镜像。就可以写这样
main: push: - stages: - name: \"Build\" image: golang:1.21 script: - go mod tidy # 确保依赖项是最新的 - go build -o myapp # 编译 Go 应用程序 - name: \"Test\" image: golang:1.21 script: - go test ./... # 运行 Go 测试 - name: \"Build Docker Image\" image: docker:20.10 # 使用 Docker 镜像来构建 Docker 镜像 script: - docker build -t myapp:latest . # 构建 Docker 镜像
这种就写法就是多阶段的构建。
四:配置资源按需获取和插件
配置资源
另外CNB 允许我们按需声明需要的 CPU 资源,以满足不同任务的需求。像一些ai项目,如果需要进行大规模的计算任务,可以声明较高的 CPU 资源:
main: push: - runner: cpus: 16 memory: 16G docker: image: node:18 stages: - npm install - npm run heavy-computation
这里通过 runner: cpus: 16 memory: 16G声明了需要 16核 CPU 资源和 16GB 内存,以确保大规模计算任务能够高效执行。
插件
CNB 也支持基于 Docker 生态的插件,这些插件可以将通用能力抽离出来,通过 Docker 生态进行高效分发。我们可以这样做:
首先查找插件:在 CNB 平台或 Docker Hub 上查找需要的插件。例如,你如果需要一个用于数据库迁移的插件,可以在相关平台搜索“database migration plugin”。
添加插件到项目:找到合适的插件后,在项目配置中添加该插件。假设插件的镜像名称为 cnbcool/db-migration-plugin-test,配置如下:
main: push: - stages: - name: db migration image: cnbcool/db-migration-plugin-test script: - migrate_command
这样我们添加了一个名为“db migration”的阶段,使用 cnbcool/db-migration-plugin-test 插件镜像,并执行相应的迁移命令。
五:其他
当然CNB也还有其他的一些功能,大家可以去多多体验。比如提供了一种基于云原生构建的远程开发解决方案。在项目页面中,找到“云原生开发”按钮,点击它以启用云原生开发模式。还有远程接入与编码功能。我们在代码准备完成后,可以通过VSCode 远程接入 CNB 提供的远程工作区。当然是需要本地安装 VSCode 的远程开发插件,然后通过插件连接到远程工作区。
使用感受
最后说下体验吧。体验还不错!以前构建应用得写一堆 Dockerfile 配置,麻烦得很。现在CNB 直接自动识别应用类型和依赖,零配置就能构建,给我省了大把时间。可以智能管理依赖,多阶段构建优化镜像,让应用启动更快。和 CI/CD 集成也顺畅,交付流程变快了。而且它跨平台、多语言支持,不管啥系统、啥语言项目都能搞定。
不足也是有的。刚接触时学习资料少点,文档不够细致全面,新手入门还是易踩坑的。多去社区交流吧,问题都能解决。