Compare commits
5 Commits
93e73e8ff1
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 858751035e | |||
| 035ab0e209 | |||
| aa8b4f386d | |||
| f01641d3fe | |||
| eed5ddb2eb |
118
README.md
118
README.md
@@ -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
|
- Node.js 20.x
|
||||||
- npm (最新版)
|
- npm 最新版
|
||||||
- yarn
|
- pnpm 包管理器
|
||||||
- Git
|
- Git 版本控制
|
||||||
- 基本开发工具 (curl, wget, vim, build-essential)
|
|
||||||
|
|
||||||
### 开发工具集成
|
|
||||||
|
|
||||||
- VS Code (通过 code-server)
|
- 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-yaml:YAML 文件支持
|
||||||
|
- mhutchie.git-graph:Git 图形化界面
|
||||||
|
|
||||||
- 安装 [Docker](https://www.docker.com/get-started)
|
## 自动配置
|
||||||
- 安装 [Terraform](https://www.terraform.io/downloads)
|
|
||||||
- 安装 [Coder](https://coder.com/docs/coder-oss/latest/install)
|
|
||||||
|
|
||||||
### 部署步骤
|
工作区第一次启动时会自动完成以下配置:
|
||||||
|
|
||||||
1. 克隆此仓库到本地
|
1. 创建 SSH 密钥对,用于 Git 操作
|
||||||
2. 初始化 Terraform 配置
|
2. 配置 SSH 连接到代码库服务器
|
||||||
```
|
3. 配置全局 Git 用户信息
|
||||||
terraform init
|
4. 自动克隆已选择的代码仓库
|
||||||
```
|
|
||||||
3. 应用 Terraform 配置创建工作空间
|
|
||||||
```
|
|
||||||
terraform apply
|
|
||||||
```
|
|
||||||
|
|
||||||
## 使用说明
|
## 使用方法
|
||||||
|
|
||||||
### 工作空间管理
|
### 创建工作区
|
||||||
|
|
||||||
工作空间创建后,您可以通过以下方式访问:
|
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 配置
|
如有任何问题或需要帮助,请联系管理员或参考 [Coder 官方文档](https://coder.com/docs)。
|
||||||
|
|
||||||
可以通过编辑 `main.tf` 文件来调整工作空间配置,例如添加更多的环境变量或修改启动脚本。
|
|
||||||
|
|
||||||
## 故障排除
|
|
||||||
|
|
||||||
如遇问题,请检查:
|
|
||||||
|
|
||||||
1. Docker 服务是否正常运行
|
|
||||||
2. Terraform 配置是否有错误
|
|
||||||
3. Coder 服务器状态
|
|
||||||
|
|
||||||
## 许可证
|
|
||||||
|
|
||||||
请参阅项目许可证文件以了解使用条款。
|
|
||||||
75
main.tf
75
main.tf
@@ -14,6 +14,33 @@ locals {
|
|||||||
image_name = "coder-nodejs-base:latest"
|
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" {
|
variable "docker_socket" {
|
||||||
default = ""
|
default = ""
|
||||||
description = "(Optional) Docker socket URI"
|
description = "(Optional) Docker socket URI"
|
||||||
@@ -55,12 +82,13 @@ resource "coder_agent" "main" {
|
|||||||
mkdir -p ~/.ssh
|
mkdir -p ~/.ssh
|
||||||
chmod 700 ~/.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-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 配置文件
|
# 创建 SSH 配置文件
|
||||||
cat > ~/.ssh/config <<EOF
|
cat > ~/.ssh/config <<EOF
|
||||||
Host ssh.lionhao.top
|
Host ssh.lionhao.top
|
||||||
|
StrictHostKeyChecking accept-new
|
||||||
Port 4022
|
Port 4022
|
||||||
User git
|
User git
|
||||||
IdentityFile ~/.ssh/git
|
IdentityFile ~/.ssh/git
|
||||||
@@ -71,12 +99,46 @@ EOF
|
|||||||
chmod 600 ~/.ssh/git
|
chmod 600 ~/.ssh/git
|
||||||
chmod 644 ~/.ssh/git.pub
|
chmod 644 ~/.ssh/git.pub
|
||||||
|
|
||||||
echo "SSH key pair created. Your public key is:"
|
echo "SSH 密钥对创建成功,你的公钥是:"
|
||||||
cat ~/.ssh/git.pub
|
cat ~/.ssh/git.pub
|
||||||
|
echo "请将以上公钥添加到 Gitea 个人 SSH 密钥中"
|
||||||
|
|
||||||
# 添加 git 全局配置
|
# 添加 git 全局配置
|
||||||
git config set --global user.name "${data.coder_workspace_owner.me.name}"
|
git config --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.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
|
touch ~/.init_done
|
||||||
fi
|
fi
|
||||||
@@ -171,7 +233,10 @@ module "code-server" {
|
|||||||
agent_id = coder_agent.main.id
|
agent_id = coder_agent.main.id
|
||||||
extensions = [
|
extensions = [
|
||||||
"redhat.vscode-yaml",
|
"redhat.vscode-yaml",
|
||||||
"mhutchie.git-graph"
|
"mhutchie.git-graph",
|
||||||
|
"Vue.volar",
|
||||||
|
"yzhang.markdown-all-in-one",
|
||||||
|
|
||||||
]
|
]
|
||||||
settings = {
|
settings = {
|
||||||
"workbench.colorTheme": "Default Dark Modern",
|
"workbench.colorTheme": "Default Dark Modern",
|
||||||
|
|||||||
Reference in New Issue
Block a user