nex_design/VOLUME_MOUNT_SOLUTION.md

179 lines
3.8 KiB
Markdown
Raw Normal View History

2025-11-13 10:11:08 +00:00
# Docker 卷挂载方案 - 实施总结
## ✅ 方案优势
相比构建时复制方案,卷挂载方案具有以下优势:
### 🚀 实时更新
- 修改 MD 文档后**立即生效**
- **无需**重新构建 Docker 镜像
- **无需**重启容器
- 开发体验极佳
### 💡 简化流程
- 构建流程更简单,无需 prebuild 脚本
- 镜像更轻量,不包含文档内容
- 文档和代码分离,职责清晰
### 🔄 灵活部署
- 可以独立管理文档版本
- 支持多环境使用不同文档
- 易于回滚和更新
## 📝 实施内容
### 1. 核心配置docker-compose.yml:16
```yaml
volumes:
- ./docs:/app/dist/docs:ro
```
**说明:**
- 将宿主机 `./docs` 挂载到容器 `/app/dist/docs`
- `:ro` 只读挂载,提高安全性
### 2. 清理之前的方案
**移除文件/配置:**
-`package.json` 中的 `prebuild` 脚本
-`Dockerfile` 中的 `cp -r docs public/` 命令
-`.gitignore` 中的 `public/docs/` 规则
**保留文件:**
-`ecosystem.config.js` - PM2 配置
-`Dockerfile` - Docker 镜像配置(已简化)
-`docker-compose.yml` - 添加了卷挂载
-`.dockerignore` - 优化构建
-`scripts/clean.sh` - 清理脚本(已更新)
### 3. 文档更新
-`DEPLOYMENT.md` - 更新为卷挂载方案说明
-`docs/DOCKER_DOCS_SETUP.md` - 详细的卷挂载方案文档
-`QUICKSTART.md` - 更新快速参考
-`README.md` - 保持部署文档链接
## 🎯 使用方法
### 本地开发
```bash
yarn dev # 开发服务器
```
### 构建和预览
```bash
yarn build # 构建(不包含 docs
yarn preview # 预览
```
### Docker 部署
```bash
# 首次部署
docker-compose up -d --build
# 后续启动
docker-compose up -d
# 查看日志
docker-compose logs -f
```
### 更新文档
```bash
# 直接编辑即可,立即生效
vim docs/DESIGN_COOKBOOK.md
# 或使用编辑器
code docs/components/PageTitleBar.md
# 浏览器刷新即可看到更新
```
## 🔍 验证方法
### 1. 检查挂载
```bash
# 查看容器挂载情况
docker inspect nex-design-app | grep -A 10 Mounts
# 检查容器内文件
docker exec nex-design-app ls -la /app/dist/docs/
```
### 2. 验证实时同步
```bash
# 在宿主机添加测试文件
echo "# Test" > docs/test.md
# 立即在容器内查看
docker exec nex-design-app cat /app/dist/docs/test.md
# 清理测试文件
rm docs/test.md
```
### 3. 浏览器访问
```bash
# 启动服务
docker-compose up -d
# 访问文档
curl http://localhost:3000/docs/DESIGN_COOKBOOK.md
# 或在浏览器打开
open http://localhost:3000
```
## 📊 方案对比
| 特性 | 卷挂载方案 ✅ | 构建时复制方案 |
|------|--------------|----------------|
| 文档实时更新 | ✅ 立即生效 | ❌ 需要重新构建 |
| 镜像体积 | ✅ 更小 | ❌ 更大 |
| 构建速度 | ✅ 更快 | ❌ 更慢 |
| 维护便利性 | ✅ 直接编辑 | ❌ 需要构建 |
| 部署灵活性 | ✅ 高 | ⚠️ 中 |
| 镜像自包含 | ⚠️ 需要 docs 目录 | ✅ 完全自包含 |
## 🚨 注意事项
### 1. 部署要求
- 部署时需要确保 `docs/` 目录存在
- 使用 `git clone``scp -r` 时包含 docs 目录
### 2. 权限管理
```bash
# 确保 docs 目录权限正确
chmod -R 755 docs/
```
### 3. 生产环境
可以将 docs 部署到专门的目录:
```yaml
# docker-compose.prod.yml
volumes:
- /var/www/nex-design-docs:/app/dist/docs:ro
```
## 📚 相关文档
- **QUICKSTART.md** - 快速参考和常用命令
- **DEPLOYMENT.md** - 完整部署文档
- **docs/DOCKER_DOCS_SETUP.md** - 卷挂载方案详细说明
## 🎉 总结
**核心优势:**
- 修改文档 → 立即生效
- 简化构建流程
- 提升开发体验
**一行配置搞定:**
```yaml
volumes:
- ./docs:/app/dist/docs:ro
```
这就是你想要的方案!🎯