logo
0
0
WeChat Login

CNB 云原生开发环境镜像

基于 CNB 平台的通用开发环境 Docker 镜像集合,开箱即用。支持 Golang、Java、Python 等多种语言环境,内置 Claude Code AI 编程工具。

✨ 核心特性

  • 云原生开发 - 基于 CNB 平台,支持 WebIDE、VSCode 客户端、Cursor 客户端连接
  • 开箱即用 - 预装常用开发工具和 Claude Code AI 编程工具
  • 多环境支持 - Golang、Java、Python 等多种语言环境
  • 配置持久化 - Claude Code 配置和历史会话自动保存
  • 智能构建 - 按需构建,只重建变化的环境
  • 易于扩展 - 3 步添加新环境

🎯 项目定位

本项目构建和维护基于 CNB 平台的云原生开发环境镜像:

┌─────────────────────────────────────┐ │ 镜像构建项目(本项目) │ │ dev-image │ │ │ │ 构建和维护云原生开发环境镜像 │ │ - golang-1.22.3:latest │ │ - java-17:latest │ │ - python-3.11:latest │ └─────────────────────────────────────┘ ↓ 发布到 CNB 镜像仓库 ┌─────────────────────────────────────┐ │ 业务项目 │ │ 通过 .cnb.yml 引用镜像 │ │ 在 CNB 云原生开发环境中开发 │ │ 支持 WebIDE/VSCode/Cursor 连接 │ └─────────────────────────────────────┘

CNB 云原生开发特点:

  • 声明式 - 基于 Docker 生态,Dockerfile 声明开发环境,与代码同源管理
  • 快速启动 - 即使超大仓库,也可数秒准备好代码和环境
  • 按需使用 - 按需获取开发资源,闲时快速回收,避免资源浪费

📦 可用镜像

镜像基础镜像包含工具
golang-1.22.3:latestgolang:1.22.3Go 1.22.3 + Git + Vim + Claude Code
java-17:latestmaven:3.9-eclipse-temurin-17Java 17 + Maven + Claude Code
python-3.11:latestpython:3.11-slimPython 3.11 + pip + Claude Code

所有镜像都包含:

  • ✅ 基础开发工具(Git, Vim, Curl 等)
  • ✅ Claude Code AI 编程工具
  • ✅ 配置漫游(保留历史会话和登录状态)

🚀 快速开始

场景一:我想使用现成的开发环境(镜像使用者)

如果你是业务项目开发者,想使用这些镜像在 CNB 云原生开发环境中开发项目:

步骤 1: 在业务项目中创建 CNB 配置

在你的业务项目根目录创建 .cnb.yml 文件:

cd your-business-project/ touch .cnb.yml

步骤 2: 选择合适的镜像

编辑 .cnb.yml,参考 example.cnb.yml 配置开发环境:

# 开发环境配置 $: vscode: - runner: cpus: 32 docker: # 选择你需要的镜像 image: docker.cnb.cool/debug.icu/dev-image/golang-1.22.3:latest # image: docker.cnb.cool/debug.icu/dev-image/java-17:latest # image: docker.cnb.cool/debug.icu/dev-image/python-3.11:latest services: - vscode - docker stages: # Claude Code 配置恢复 - name: Initialize Claude Code Environment script: | if [ -f "/opt/cnb/scripts/claude-restore.sh" ]; then bash /opt/cnb/scripts/claude-restore.sh fi # 安装项目依赖 - name: Install dependencies script: | # 根据项目类型选择命令 go mod download # Go 项目 # mvn dependency:resolve # Java 项目 # pip install -r requirements.txt # Python 项目 # CI/CD 流水线配置(可选) main: push: - services: - docker stages: - name: run tests script: go test ./... # 运行测试 - name: build business image script: | # 构建你的业务应用镜像 IMAGE_NAME="${CNB_DOCKER_REGISTRY}/${CNB_REPO_SLUG_LOWERCASE}" docker build -t ${IMAGE_NAME}:latest . docker push ${IMAGE_NAME}:latest

完整配置示例请查看 example.cnb.yml

步骤 3: 启动 CNB 开发环境

提交配置后,在 CNB 平台启动云原生开发环境:

git add .cnb.yml git commit -m "Add CNB configuration" git push

在 CNB 仓库页面点击右上角 云原生开发 按钮,选择通过 WebIDE、VSCode 客户端或 Cursor 客户端连接。

在开发环境中可以使用 Claude Code AI 编程工具:

  • claude.start - 启动 Claude Code(推荐,自动配置代理)
  • claude - Claude Code 原始命令

场景二:我想添加新的开发环境(镜像构建者)

如果你想为团队添加新的开发环境镜像(比如 Node.js 20):

步骤 1: 创建环境 Dockerfile

mkdir -p envs/nodejs-20 vim envs/nodejs-20/Dockerfile

编写 Dockerfile,使用 @inject 自动注入公共基础设施:

FROM node:20-slim # 安装基础工具 RUN apt-get update && apt-get install -y \ git vim curl \ && rm -rf /var/lib/apt/lists/* # 设置字符集 ENV LANG=C.UTF-8 # ============================================ # 公共基础设施(自动注入) # ============================================ # @inject-start # @inject: claude # @inject-end WORKDIR /workspace

步骤 2: 创建环境配置(可选)

如果需要测试环境,创建 cnb.yml

vim envs/nodejs-20/cnb.yml
$: vscode: - runner: cpus: 64 docker: image: docker.cnb.cool/debug.icu/dev-image/nodejs-20:latest services: - vscode - docker stages: - name: Initialize Claude Code Environment script: | if [ -f "/opt/cnb/scripts/claude-restore.sh" ]; then bash /opt/cnb/scripts/claude-restore.sh fi

步骤 3: 更新 CI 配置

编辑 .cnb.yml,添加新环境到构建流水线:

main: push: golang-1.22.3: *env-build-pipeline java-17: *env-build-pipeline python-3.11: *env-build-pipeline nodejs-20: *env-build-pipeline # 添加这行

步骤 4: 提交推送

git add envs/nodejs-20/ .cnb.yml git commit -m "feat: add Node.js 20 environment" git push origin main

CI/CD 会自动构建并推送新镜像到仓库!

本地测试(可选):

# 本地构建测试 bash dev/build-env.sh nodejs-20 # 本地运行测试 docker run --rm -it docker.cnb.cool/debug.icu/dev-image/nodejs-20:latest bash

🤖 Claude Code AI 编程工具

所有镜像都内置了 Claude Code AI 编程工具,支持配置持久化:

什么是 Claude Code?

  • Claude Code 是 AI 编程工具,可以帮助你编写代码、调试问题、重构代码等
  • 在终端运行 claude.startclaude 命令启动

配置持久化:

  • 自动恢复 - 容器重启后保留历史会话和登录状态
  • 配置存储 - 存储在 ~/.cnb/claude/${CNB_REPO_SLUG_LOWERCASE}/,自动漫游
  • 两种启动方式:
    • claude.start - 推荐,自动配置代理和认证
    • claude - 原始命令

详细说明请查看 setup/README-CLAUDE.md


📚 开发者文档

如果你想深入了解项目工作原理或进行高级配置:

核心概念

扩展开发

项目结构

. ├── .cnb.yml # CI/CD 流水线配置 ├── example.cnb.yml # 业务项目配置示例 ├── envs/ # 环境定义(Dockerfile + cnb.yml) ├── dev/ # 开发工具和注入片段 ├── setup/ # 安装脚本(打包进镜像) └── image-scripts/ # 镜像内脚本(打包进镜像)

❓ 常见问题

镜像使用者

Q: 如何在业务项目中使用这些镜像? A: 参考 example.cnb.yml,在业务项目根目录创建 .cnb.yml 配置文件。

Q: Claude Code 的历史会话能保存吗? A: 能。配置存储在 ~/.cnb 目录,容器重启后自动恢复。

Q: 如何切换不同的开发环境? A: 修改 .cnb.yml 中的 image: 配置,选择不同的镜像。

镜像构建者

Q: 如何本地测试构建? A: 运行 bash dev/build-env.sh <env-name> 进行本地构建测试。

Q: 修改公共脚本会影响所有环境吗? A: 是的。修改 setup/image-scripts/ 会触发所有环境重新构建。

Q: 什么是 @inject 指令? A: 自动注入预定义代码片段的机制,详见 envs/INJECT.md


🔗 相关链接


📄 许可

本项目用于内部开发环境管理。

About

开发环境镜像