nex_design/VOLUME_MOUNT_SOLUTION.md

179 lines
3.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 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
```
这就是你想要的方案!🎯