Files
hair-keeper/.cloud-dev/README.md

335 lines
8.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 云开发容器
本目录包含 Hair Keeper 项目的云开发容器配置,提供完整的开发环境,无需在本地安装任何开发工具。
## 📦 容器内容
### 开发环境
- **Node.js**: 22.14.0
- **pnpm**: 最新版本
- **Python**: 3.12
- **Code Server**: 4.96.2 (基于 VS Code 的 Web IDE)
- **Git**: 版本控制工具
### Shell 环境
- **zsh**: 默认 Shell
- **oh-my-zsh**: zsh 配置框架
- **tmux**: 终端复用器
### 命令行工具
- **ttyd**: Web 终端(可选启动)
- **tree**: 目录树显示
- **pwgen**: 密码生成器
- **curl/wget**: 下载工具
- **ffmpeg**: 多媒体处理
- **mc**: MinIO 客户端
- **zip/unzip**: 压缩工具
- **net-tools**: 网络工具
- **ssh**: 远程连接
- **cmake**: 构建工具
- **telnet**: 网络调试
- **redis-tools**: Redis 命令行工具
- **potrace**: 位图转矢量图
- **imagemagick**: 图像处理工具
- **uv**: 快速 Python 包管理器
### NPM 全局包
- `@anthropic-ai/claude-code`: Claude AI 代码助手
- `@musistudio/claude-code-router`: Claude 代码路由器
### VS Code 插件
- **vscode-pdf**: PDF 查看器
- **Markdown Preview Mermaid Support**: Mermaid 图表支持
- **Python**: Python 语言支持
- **Roo Code**: Roo 代码助手
- **ESLint**: JavaScript/TypeScript 代码检查
- **HTML Preview**: HTML 预览
- **Prisma**: Prisma ORM 支持
- **HTML CSS Support**: HTML/CSS 智能提示
- **Redis**: Redis 客户端
## 🚀 使用方法
### 方式一:使用 Docker Compose推荐
#### 使用默认密码启动
```zsh
cd .cloud-dev
docker compose up -d
```
#### 自定义密码启动
修改 `docker-compose.yml` 中的 `DEV_PASSWORD` 环境变量,或使用环境变量覆盖:
```zsh
DEV_PASSWORD=your_password docker compose up -d
```
停止容器:
```zsh
docker compose down
```
查看日志:
```zsh
docker compose logs -f
```
重新构建:
```zsh
docker compose up -d --build
```
### 方式二:使用 Docker 命令
#### 1. 构建镜像
```zsh
cd .cloud-dev
docker build -t hair-keeper-dev .
```
#### 2. 运行容器
使用默认密码:
```zsh
docker run -d \
--name hair-keeper-dev \
-p 2222:22 \
-p 8080:8080 \
-p 7681:7681 \
-p 3000:3000 \
-v $(pwd)/..:/workspace:cached \
-v hair-keeper-node-modules:/workspace/node_modules \
-v hair-keeper-pnpm-store:/root/.local/share/pnpm/store \
hair-keeper-dev
```
使用自定义密码:
```zsh
docker run -d \
--name hair-keeper-dev \
-e DEV_PASSWORD=your_password \
-p 2222:22 \
-p 8080:8080 \
-p 7681:7681 \
-p 3000:3000 \
-v $(pwd)/..:/workspace:cached \
-v hair-keeper-node-modules:/workspace/node_modules \
-v hair-keeper-pnpm-store:/root/.local/share/pnpm/store \
hair-keeper-dev
```
### 3. 访问开发环境
容器启动后,可以通过以下方式访问:
#### Code Server (Web IDE)
- **地址**: http://localhost:8080
- **默认密码**: `clouddev`(可通过 `DEV_PASSWORD` 环境变量自定义)
- 提供完整的 VS Code 开发体验
- 内置终端使用 zsh + oh-my-zsh
#### SSH 连接
```zsh
ssh root@localhost -p 2222
# 默认密码: clouddev可通过 DEV_PASSWORD 环境变量自定义)
```
#### Next.js 开发服务器
- **地址**: http://localhost:3000
- 在容器内运行 `pnpm run dev` 启动
## 📝 端口映射
| 服务 | 容器端口 | 主机端口 | 说明 |
|------|---------|---------|------|
| SSH | 22 | 2222 | SSH 远程连接 |
| Code Server | 8080 | 8080 | Web IDE |
| Next.js | 3000 | 3000 | 开发服务器 |
**注意**: ttyd (Web 终端) 默认不启动,如需使用可在容器内手动运行:
```zsh
ttyd -p 7681 zsh
```
然后通过 http://localhost:7681 访问(需要在 docker run 或 docker-compose.yml 中映射 7681 端口)
## 🔧 常用操作
### 进入容器
```zsh
docker exec -it hair-keeper-dev zsh
```
### 安装项目依赖
```zsh
docker exec -it hair-keeper-dev pnpm install
```
### 启动开发服务器
```zsh
docker exec -it hair-keeper-dev pnpm run dev
```
### 查看容器日志
```zsh
docker logs -f hair-keeper-dev
```
### 查看 Code Server 日志
Code Server 的日志位于容器内的 `/root/.local/share/code-server/coder-logs/` 目录,包含两个日志文件:
```zsh
# 查看日志文件列表
docker exec -it hair-keeper-dev ls -lt /root/.local/share/code-server/coder-logs/
# 实时查看标准输出日志
docker exec -it hair-keeper-dev tail -f /root/.local/share/code-server/coder-logs/code-server-stdout.log
# 实时查看错误日志
docker exec -it hair-keeper-dev tail -f /root/.local/share/code-server/coder-logs/code-server-stderr.log
# 同时查看两个日志文件
docker exec -it hair-keeper-dev tail -f /root/.local/share/code-server/coder-logs/code-server-*.log
# 或者在容器内查看
docker exec -it hair-keeper-dev zsh
cd /root/.local/share/code-server/coder-logs/
tail -f code-server-stdout.log code-server-stderr.log
```
### 停止容器
```zsh
docker stop hair-keeper-dev
```
### 删除容器
```zsh
docker rm hair-keeper-dev
```
## 🎯 工作流程
1. **启动容器**: 运行上述 docker run 命令
2. **访问 Code Server**: 在浏览器打开 http://localhost:8080
3. **打开项目**: Code Server 会自动打开 /workspace 目录(映射到项目根目录)
4. **安装依赖**: 在终端运行 `pnpm install`
5. **启动开发**: 运行 `pnpm run dev`
6. **开始开发**: 在浏览器访问 http://localhost:3000
## 💡 提示
### Shell 环境
容器默认使用 **zsh** 作为 Shell配置了 **oh-my-zsh** 框架:
- 主题robbyrussell
- 插件git, node, npm, docker, python
- 自动补全和语法高亮
- 更友好的命令行体验
### Python 包管理
推荐使用 **uv** 进行 Python 包管理,它比 pip 快得多:
```zsh
# 创建虚拟环境
uv venv
# 安装包
uv pip install package-name
# 从 requirements.txt 安装
uv pip install -r requirements.txt
```
### 数据持久化
- 项目代码通过 volume 映射,修改会实时同步到主机
- node_modules 建议使用 Docker volume 以提高性能
### 性能优化
如果需要更好的性能,可以使用命名卷:
```zsh
docker volume create hair-keeper-node-modules
docker run -d \
--name hair-keeper-dev \
-p 2222:22 \
-p 8080:8080 \
-p 7681:7681 \
-p 3000:3000 \
-v $(pwd)/..:/workspace \
-v hair-keeper-node-modules:/workspace/node_modules \
hair-keeper-dev
```
### 运行时修改密码
如果需要在容器运行时修改密码:
**方法一:重启容器并设置新密码**
```zsh
docker stop hair-keeper-dev
docker rm hair-keeper-dev
# 使用新密码重新启动
DEV_PASSWORD=new_password docker compose up -d
```
**方法二:在容器内手动修改**
```zsh
# SSH 密码
docker exec -it hair-keeper-dev passwd
# Code Server 密码
docker exec -it hair-keeper-dev zsh -c "echo 'password: new_password' >> /root/.config/code-server/config.yaml"
# 然后重启 code-server
```
## 🔐 密码配置
### 默认密码
容器默认密码为 `clouddev`,用于:
- SSH 登录root 用户)
- Code Server Web IDE
### 自定义密码
通过环境变量 `DEV_PASSWORD` 设置自定义密码:
**Docker Compose 方式**
编辑 `docker-compose.yml`
```yaml
environment:
- DEV_PASSWORD=your_secure_password
```
**Docker 命令方式**
```zsh
docker run -e DEV_PASSWORD=your_secure_password ...
```
### 安全建议
- ⚠️ 生产环境务必修改默认密码
- 建议使用 SSH 密钥认证替代密码
- 不要将容器直接暴露到公网
- 使用反向代理(如 Nginx并配置 HTTPS
- 定期更换密码
## 📚 相关资源
- [Code Server 文档](https://coder.com/docs/code-server)
- [Docker 文档](https://docs.docker.com/)
- [tmux 快捷键](https://tmuxcheatsheet.com/)
## 🐛 故障排除
### 端口被占用
如果端口被占用,可以修改主机端口映射:
```zsh
-p 8081:8080 # 将 Code Server 映射到 8081
```
### 权限问题
如果遇到文件权限问题,确保容器内的用户有正确的权限:
```zsh
docker exec -it hair-keeper-dev chown -R root:root /workspace
```
### 容器无法启动
查看容器日志排查问题:
```zsh
docker logs hair-keeper-dev