基于 CNB 平台的通用开发环境 Docker 镜像集合,开箱即用。支持 Golang、Java、Python 等多种语言环境,内置 Claude Code AI 编程工具。
本项目构建和维护基于 CNB 平台的云原生开发环境镜像:
┌─────────────────────────────────────┐ │ 镜像构建项目(本项目) │ │ dev-image │ │ │ │ 构建和维护云原生开发环境镜像 │ │ - golang-1.22.3:latest │ │ - java-17:latest │ │ - python-3.11:latest │ └─────────────────────────────────────┘ ↓ 发布到 CNB 镜像仓库 ┌─────────────────────────────────────┐ │ 业务项目 │ │ 通过 .cnb.yml 引用镜像 │ │ 在 CNB 云原生开发环境中开发 │ │ 支持 WebIDE/VSCode/Cursor 连接 │ └─────────────────────────────────────┘
CNB 云原生开发特点:
| 镜像 | 基础镜像 | 包含工具 |
|---|---|---|
golang-1.22.3:latest | golang:1.22.3 | Go 1.22.3 + Git + Vim + Claude Code |
java-17:latest | maven:3.9-eclipse-temurin-17 | Java 17 + Maven + Claude Code |
python-3.11:latest | python:3.11-slim | Python 3.11 + pip + Claude Code |
所有镜像都包含:
如果你是业务项目开发者,想使用这些镜像在 CNB 云原生开发环境中开发项目:
在你的业务项目根目录创建 .cnb.yml 文件:
cd your-business-project/
touch .cnb.yml
编辑 .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。
提交配置后,在 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):
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
如果需要测试环境,创建 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
编辑 .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 # 添加这行
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?
claude.start 或 claude 命令启动配置持久化:
~/.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。
本项目用于内部开发环境管理。