Compare commits

..

5 Commits

Author SHA1 Message Date
858751035e 添加 code-server 插件 2025-05-05 16:59:25 +08:00
035ab0e209 更新 README 2025-05-02 20:52:32 +08:00
aa8b4f386d 优化模板用户提示 2025-05-02 20:52:16 +08:00
f01641d3fe 添加荆棘鸟官方仓库克隆选项 2025-05-02 20:51:38 +08:00
eed5ddb2eb 更新 README 2025-05-02 17:43:38 +08:00
2 changed files with 119 additions and 74 deletions

118
README.md
View File

@@ -1,97 +1,77 @@
# Jingji Coder 开发模板
# 荆棘鸟 Coder 开发环境模板
这是一个基于 [Coder](https://coder.com/) 的 Node.js 开发环境模板,用于快速设置一致的开发环境。
## 概述
## 简介
这是一个基于 [Coder](https://coder.com/) 的开发环境模板,专为荆棘鸟文学社设计。该模板提供了一个预配置的 Node.js 开发环境,使开发者可以在任何设备上通过浏览器或远程 IDE 连接进行开发工作。
该模板使用 Docker 容器创建一个预配置的 Node.js 开发环境,包含常用开发工具和 IDE 支持。通过 Terraform 配置,可以快速部署并管理这些开发环境。
## 特性
## 环境配置
- 基于 Docker 的隔离开发环境
- 预装 Node.js 20.x 和开发工具
- 自动配置 VS Code (code-server) 开发环境
- 自动生成 SSH 密钥对用于 Git 操作
- 持久化存储确保工作空间数据安全保存
- 系统资源监控仪表板
### 预装软件
## 技术栈
- Node.js 20.x
- npm (最新版)
- yarn
- Git
- 基本开发工具 (curl, wget, vim, build-essential)
### 开发工具集成
- npm 最新版
- pnpm 包管理器
- Git 版本控制
- VS Code (通过 code-server)
- JetBrains IDEs 支持 (通过 JetBrains Gateway),包括:
- IntelliJ IDEA Ultimate (IU)
- PhpStorm (PS)
- WebStorm (WS)
- PyCharm (PY)
- CLion (CL)
- GoLand (GO)
- RubyMine (RM)
- Rider (RD)
- RustrRover (RR)
## 设置指南
## 预安装的 VS Code 扩展
### 前提条件
- redhat.vscode-yamlYAML 文件支持
- mhutchie.git-graphGit 图形化界面
- 安装 [Docker](https://www.docker.com/get-started)
- 安装 [Terraform](https://www.terraform.io/downloads)
- 安装 [Coder](https://coder.com/docs/coder-oss/latest/install)
## 自动配置
### 部署步骤
工作区第一次启动时会自动完成以下配置:
1. 克隆此仓库到本地
2. 初始化 Terraform 配置
```
terraform init
```
3. 应用 Terraform 配置创建工作空间
```
terraform apply
```
1. 创建 SSH 密钥对,用于 Git 操作
2. 配置 SSH 连接到代码库服务器
3. 配置全局 Git 用户信息
4. 自动克隆已选择的代码仓库
## 使用说明
## 使用方法
### 工作空间管理
### 创建工作区
工作空间创建后,您可以通过以下方式访问:
1. 登录到 Coder 平台
2. 选择此模板创建新工作区
3. 等待工作区启动完成
1. 通过 Web 浏览器访问 VS Code
2. 使用 JetBrains Gateway 连接到您喜欢的 JetBrains IDE
3. 使用 SSH 直接连接到工作空间
### 连接到工作区
### 持久化存储
可通过以下方式连接到工作区:
工作空间使用 Docker 卷 (`coder-{workspace-id}-home`) 来保存您的所有文件和配置,确保在工作空间重启后数据不会丢失。
1. **浏览器访问** - 通过 Coder 界面打开内置 VS Code
2. **VS Code Remote** - 使用本地 VS Code 连接到远程工作区
3. **SSH 连接** - 使用终端直接 SSH 连接到工作区
### 监控资源
### 项目目录结构
工作空间包含以下监控指标:
所有项目文件应存储在 `/home/coder/jingjiniao` 目录中,此目录会自动在 VS Code 中打开。
- CPU 使用率(容器和宿主机)
- 内存使用率(容器和宿主机)
## 系统资源监控
工作区提供以下系统资源监控指标:
- CPU 使用率(容器内和宿主机)
- 内存使用情况(容器内和宿主机)
- 磁盘使用情况
- 宿主机负载平均值
- 宿主机交换空间使用情况
- 宿主机交换内存使用情况
- Node.js 和 pnpm 版本信息
## 自定义配置
## 注意事项
### 修改 Docker 镜像
- 工作区中的 `/home/coder` 目录是持久化的,数据会在工作区重启后保留
- 第一次启动会自动生成 SSH 密钥,密钥保存在 `~/.ssh/git` 文件中
- 公钥显示在首次启动日志中,可用于设置 Git 仓库访问权限
如需添加其他工具或依赖,请编辑 `Dockerfile` 并重新构建镜像。
## 技术支持
### 修改 Terraform 配置
可以通过编辑 `main.tf` 文件来调整工作空间配置,例如添加更多的环境变量或修改启动脚本。
## 故障排除
如遇问题,请检查:
1. Docker 服务是否正常运行
2. Terraform 配置是否有错误
3. Coder 服务器状态
## 许可证
请参阅项目许可证文件以了解使用条款。
如有任何问题或需要帮助,请联系管理员或参考 [Coder 官方文档](https://coder.com/docs)。

75
main.tf
View File

@@ -14,6 +14,33 @@ locals {
image_name = "coder-nodejs-base:latest"
}
data "coder_parameter" "clone_reference" {
name = "初始化荆棘鸟文学社参考文档"
type = "bool"
description = "是否初始化荆棘鸟参考文档"
mutable = true
default = "true"
icon = "/emojis/1f4d6.png"
}
data "coder_parameter" "clone_spbook" {
name = "初始化荆棘鸟文学社高三特刊"
type = "bool"
description = "是否初始化荆棘鸟文学社高三特刊"
mutable = true
default = "false"
icon = "/emojis/1f4da.png"
}
data "coder_parameter" "clone_main" {
name = "初始化荆棘鸟文学社主站点"
type = "bool"
description = "是否初始化荆棘鸟文学社主站点"
mutable = true
default = "false"
icon = "/emojis/1f3e0.png"
}
variable "docker_socket" {
default = ""
description = "(Optional) Docker socket URI"
@@ -55,12 +82,13 @@ resource "coder_agent" "main" {
mkdir -p ~/.ssh
chmod 700 ~/.ssh
# 生成 SSH 密钥对,不设置密码
# 生成 SSH 密钥对
ssh-keygen -t ed25519 -f ~/.ssh/git -N "" -C "${data.coder_workspace_owner.me.name}(${data.coder_workspace_owner.me.email})-${data.coder_workspace.me.name}"
# 创建 SSH 配置文件
cat > ~/.ssh/config <<EOF
Host ssh.lionhao.top
StrictHostKeyChecking accept-new
Port 4022
User git
IdentityFile ~/.ssh/git
@@ -71,12 +99,46 @@ EOF
chmod 600 ~/.ssh/git
chmod 644 ~/.ssh/git.pub
echo "SSH key pair created. Your public key is:"
echo "SSH 密钥对创建成功,你的公钥是:"
cat ~/.ssh/git.pub
echo "请将以上公钥添加到 Gitea 个人 SSH 密钥中"
# 添加 git 全局配置
git config set --global user.name "${data.coder_workspace_owner.me.name}"
git config set --global user.email "${data.coder_workspace_owner.me.email}"
git config --global user.name "${data.coder_workspace_owner.me.name}"
git config --global user.email "${data.coder_workspace_owner.me.email}"
cd /home/coder/jingjiniao
# 拉取仓库
if [ "${data.coder_parameter.clone_reference.value}" = "true" ]; then
echo "正在克隆 荆棘鸟文学社参考文档站点仓库..."
git clone https://gitea.lionhao.top/jjnwxs/jingji_reference.git
echo "荆棘鸟文学社参考文档站点仓库 克隆完成"
cd jingji_reference
git remote set-url origin git@ssh.lionhao.top:jjnwxs/jingji_reference.git
echo "荆棘鸟文学社参考文档站点仓库 远程地址设置成功"
cd ..
fi
if [ "${data.coder_parameter.clone_spbook.value}" = "true" ]; then
echo "正在克隆 荆棘鸟文学社高三特刊站点仓库..."
git clone https://gitea.lionhao.top/jjnwxs/jingji_spbook.git
echo "荆棘鸟文学社高三特刊站点仓库 克隆完成"
cd jingji_spbook
git remote set-url origin git@ssh.lionhao.top:jjnwxs/jingji_spbook.git
echo " 荆棘鸟文学社高三特刊站点仓库 远程地址设置成功"
cd ..
fi
if [ "${data.coder_parameter.clone_main.value}" = "true" ]; then
echo "正在克隆 荆棘鸟文学社主站点仓库..."
git clone https://gitea.lionhao.top/jjnwxs/jingji_main.git
echo "荆棘鸟文学社主站点仓库 克隆完成"
cd jingji_main
git remote set-url origin git@ssh.lionhao.top:jjnwxs/jingji_main.git
echo "荆棘鸟文学社主站点仓库 远程地址设置成功"
cd ..
fi
touch ~/.init_done
fi
@@ -171,7 +233,10 @@ module "code-server" {
agent_id = coder_agent.main.id
extensions = [
"redhat.vscode-yaml",
"mhutchie.git-graph"
"mhutchie.git-graph",
"Vue.volar",
"yzhang.markdown-all-in-one",
]
settings = {
"workbench.colorTheme": "Default Dark Modern",