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