Skip to content

Latest commit

 

History

History
executable file
·
132 lines (97 loc) · 3.5 KB

File metadata and controls

executable file
·
132 lines (97 loc) · 3.5 KB

OpenCode Dev Environment

OpenCode Dev Environment 是一个基于 Debian Bookworm 的容器化开发环境,专门为 OpenCode AI 助手构建。预装 Go、Node.js、kubectl、helm、gh、opencode-ai 等开发工具,并支持 OpenCode Skills 扩展。

快速开始

make build    # 构建镜像
make deploy   # 部署应用
make exec     # 进入容器
make logs     # 查看日志
make clean    # 清理资源

构建模式

工具会自动检测构建方式:

模式 条件 说明
本地构建 无 kubeconfig.yaml 使用本地 buildah 命令
K8s 构建 有 kubeconfig.yaml 使用 Buildah Job

配置文件

config.yaml(必需)

registry: <你的镜像仓库>
registry_user: <用户名>
registry_pass: <密码>
image: <完整镜像地址>

kubeconfig.yaml(可选)

从 K8s 集群获取 kubeconfig 配置文件。存在时使用 K8s 构建,否则使用本地构建。

项目结构

opencode-dev/
├── .gitignore            # Git 忽略配置
├── Makefile             # 统一工具脚本
├── AGENTS.md            # 开发规范
├── README.md            # 项目说明
├── config/              # 配置文件
│   ├── Dockerfile.template  # Docker 镜像模板
│   ├── registries.conf      # Buildah 镜像源配置
│   ├── k8s-pod.yaml        # K8s Build Pod 模板
│   └── k8s-deploy.yaml     # K8s Deploy 模板
├── preinstall/
│   ├── preinstall.json      # 预装清单
│   └── preinstall-opencode.json  # OpenCode 默认配置
├── scripts/
│   ├── entrypoint.sh       # 启动脚本
│   └── generate-dockefile.sh  # Dockerfile 生成脚本
└── .config/opencode/       # OpenCode 配置(构建时打包)

预装配置

预装内容通过 preinstall/preinstall.json 管理:

  • dockerfile:补充 Dockerfile 命令(如 COPY --from)
  • environment:基础环境工具(Go、Node.js、kubectl 等)
  • opencode:OpenCode 生态项目(插件、Skills)

preinstall/preinstall-opencode.json 用于保存 OpenCode 默认配置。容器启动时:

  • 先把 /opt/preinstall/.config/opencode/ 复制到 ~/.config/opencode/
  • 再将 preinstall-opencode.json 合并到 ~/.config/opencode/opencode.json
  • 数组字段去重合并,新字段补充,已有非数组字段保持用户原值

详见 AGENTS.md

部署应用

直接使用预构建镜像

可直接使用已构建的镜像部署:

# 部署默认镜像
kubectl run opencode-dev --image=zpk.idc.w7.com/w7panel/opencode-dev:latest \
  --port=4096 --restart=Always --namespace=default

# 或使用 Deployment
kubectl create deployment opencode-dev --image=zpk.idc.w7.com/w7panel/opencode-dev:latest \
  --namespace=default

# 暴露服务
kubectl expose deployment opencode-dev --port=4096 --target-port=4096 \
  --type=NodePort --namespace=default

自定义构建后部署

# 1. 构建镜像
make build

# 2. 部署到 K8s
make deploy

# 3. 查看状态
kubectl get pods,svc -n default -l app=opencode-dev

# 4. 进入容器
make exec

环境变量

变量 默认值 说明
PORT 4096 服务端口
NS default K8s 命名空间

持久化存储

/home 目录为工作目录,建议挂载 PVC 进行持久化:

volumeMounts:
  - name: home
    mountPath: /home
volumes:
  - name: home
    persistentVolumeClaim:
      claimName: opencode-dev-home