344 lines
6.4 KiB
Markdown
344 lines
6.4 KiB
Markdown
# VitePress Docker 部署指南
|
||
|
||
## 概述
|
||
|
||
本项目提供了完整的 VitePress 文档系统 Docker 部署方案,包含 VitePress 文档服务、API 服务和 PDF 导出功能。
|
||
|
||
## 功能特性
|
||
|
||
- ✅ VitePress 文档服务(端口 3000)
|
||
- ✅ RESTful API 服务(端口 3001)
|
||
- ✅ PDF 导出功能
|
||
- ✅ 中文、俄语等多语言字体支持
|
||
- ✅ 跨平台部署支持
|
||
|
||
## 系统要求
|
||
|
||
- Docker 20.10+
|
||
- Docker Compose 2.0+
|
||
- 至少 2GB 可用内存
|
||
|
||
## 快速开始
|
||
|
||
### 1. 准备配置文件
|
||
|
||
在项目根目录创建 `.env` 文件:
|
||
|
||
```bash
|
||
# VitePress 文档服务器端口
|
||
VITEPRESS_PORT=3000
|
||
|
||
# API 服务器端口
|
||
API_PORT=3001
|
||
|
||
# 文档目录路径(相对于项目根目录)
|
||
DOCS_DIR=./docs
|
||
```
|
||
|
||
### 2. 构建并启动服务
|
||
|
||
```bash
|
||
# 构建镜像并启动服务
|
||
docker-compose up --build
|
||
|
||
# 或者后台运行
|
||
docker-compose up --build -d
|
||
```
|
||
|
||
### 3. 验证服务状态
|
||
|
||
访问以下地址确认服务正常运行:
|
||
|
||
- **VitePress 文档**: http://localhost:3000
|
||
- **API 健康检查**: http://localhost:3001/health
|
||
|
||
## 目录结构
|
||
|
||
```
|
||
hf-mes-docs-vitepress/
|
||
├── docker/
|
||
│ ├── api/
|
||
│ │ ├── server.js # API 服务主文件
|
||
│ │ └── package.json # API 依赖
|
||
│ ├── Dockerfile # Docker 镜像构建文件
|
||
│ └── docker-entrypoint.sh # 容器启动脚本
|
||
├── docs/ # VitePress 文档目录 **生产时使用**
|
||
│ ├── .vitepress/
|
||
│ │ ├── config.mjs # VitePress 配置
|
||
│ │ └── vitepress-pdf.config.ts # PDF 导出配置
|
||
│ ├── index.md # 首页
|
||
│ ├── guide/ # 指南目录
|
||
│ ├── getting-started/ # 入门目录
|
||
│ └── ... # 其他文档
|
||
├── docker-compose.yml # Docker Compose 配置
|
||
├── package.json # 项目依赖 **构建docker时使用**
|
||
└── .env # 环境变量配置
|
||
```
|
||
|
||
## 常用命令
|
||
|
||
|
||
### 直接拉取image
|
||
```bash
|
||
docker pull xeden3/vitepress-docker:latest
|
||
```
|
||
|
||
### 启动服务
|
||
```bash
|
||
# 前台运行
|
||
docker-compose up
|
||
|
||
# 后台运行
|
||
docker-compose up -d
|
||
|
||
# 重新构建并启动
|
||
docker-compose up --build
|
||
```
|
||
|
||
### 停止服务
|
||
|
||
```bash
|
||
# 停止服务
|
||
docker-compose down
|
||
|
||
# 停止并删除数据卷
|
||
docker-compose down -v
|
||
```
|
||
|
||
### 查看日志
|
||
|
||
```bash
|
||
# 查看所有日志
|
||
docker-compose logs -f
|
||
|
||
# 查看 API 服务日志
|
||
docker-compose logs -f api
|
||
|
||
# 查看最近 100 行日志
|
||
docker-compose logs --tail=100
|
||
```
|
||
|
||
### 重启服务
|
||
|
||
```bash
|
||
# 重启所有服务
|
||
docker-compose restart
|
||
```
|
||
|
||
## 环境变量配置
|
||
|
||
### 可用环境变量
|
||
|
||
| 变量名 | 默认值 | 说明 |
|
||
|--------|--------|------|
|
||
| `VITEPRESS_PORT` | 3000 | VitePress 文档服务端口 |
|
||
| `API_PORT` | 3001 | API 服务端口 |
|
||
| `DOCS_DIR` | ./docs | 文档目录(支持绝对路径和相对路径) |
|
||
| `DOCS_PATH` | /app/docs | 容器内文档路径(固定值) |
|
||
|
||
### 配置示例
|
||
|
||
#### 使用相对路径(默认)
|
||
|
||
```bash
|
||
DOCS_DIR=./docs
|
||
```
|
||
|
||
#### 使用绝对路径
|
||
|
||
**Windows:**
|
||
```bash
|
||
DOCS_DIR=C:\Users\xeden\Desktop\MES使用手册\hf-mes-docs-vitepress\docs
|
||
```
|
||
|
||
**Linux/Mac:**
|
||
```bash
|
||
DOCS_DIR=/home/user/docs
|
||
```
|
||
|
||
## 自定义文档目录
|
||
|
||
默认情况下,Docker 会挂载项目根目录下的 `./docs` 文件夹到容器的 `/app/docs`。
|
||
|
||
### 方法一:通过 .env 文件
|
||
|
||
在项目根目录的 `.env` 文件中修改:
|
||
|
||
```bash
|
||
DOCS_DIR=./docs
|
||
```
|
||
|
||
### 方法二:通过命令行
|
||
|
||
```bash
|
||
# Linux/Mac
|
||
DOCS_DIR=/custom/path docker-compose up -d
|
||
|
||
# Windows PowerShell
|
||
$env:DOCS_DIR="C:\custom\docs"; docker-compose up -d
|
||
```
|
||
|
||
### 方法三:修改 docker-compose.yml
|
||
|
||
直接修改 `docker-compose.yml` 文件中的 `volumes` 配置:
|
||
|
||
```yaml
|
||
volumes:
|
||
- /your/custom/path:/app/docs
|
||
```
|
||
|
||
## PDF 导出功能
|
||
|
||
### 使用 API 导出 PDF
|
||
|
||
API 服务提供以下端点:
|
||
|
||
#### 健康检查
|
||
|
||
```bash
|
||
curl http://localhost:3001/health
|
||
```
|
||
|
||
#### 导出 PDF
|
||
|
||
```bash
|
||
curl "http://localhost:3001/export-pdf"
|
||
```
|
||
|
||
#### 查看已导出的 PDF
|
||
|
||
```bash
|
||
curl http://localhost:3001/pdf-files
|
||
```
|
||
|
||
### PDF 文件位置
|
||
|
||
导出的 PDF 文件保存在你配置的 `DOCS_DIR` 目录下。
|
||
|
||
### 导出配置
|
||
|
||
PDF 导出使用 `vitepress-export-pdf` 插件,配置位于:
|
||
|
||
```
|
||
docs/.vitepress/vitepress-pdf.config.ts
|
||
```
|
||
|
||
如需自定义 PDF 导出选项,请修改该配置文件。
|
||
|
||
**导出文件名与 `vitepress-pdf.config.ts` 配置一致**
|
||
|
||
## 多语言支持
|
||
|
||
Docker 镜像已包含以下字体支持:
|
||
|
||
- ✅ 中文字体(文泉驿、Noto CJK)
|
||
- ✅ 俄文字体(DejaVu)
|
||
- ✅ 其他语言字体
|
||
|
||
### 使用自定义字体
|
||
|
||
如需使用 Windows 雅黑字体,可以:
|
||
|
||
1. 从 Windows 系统复制字体文件:
|
||
```bash
|
||
# 假设容器名称为 vitepress-docker
|
||
docker cp C:\Windows\Fonts\msyh.ttc vitepress-docker:/usr/share/fonts/truetype/
|
||
```
|
||
|
||
2. 进入容器更新字体缓存:
|
||
```bash
|
||
docker exec vitepress-docker fc-cache -fv
|
||
```
|
||
|
||
3. 重新导出 PDF 即可使用新字体
|
||
|
||
## 故障排除
|
||
|
||
### 容器无法启动
|
||
|
||
1. 检查端口占用:
|
||
```bash
|
||
# Windows
|
||
netstat -ano | findstr 3000
|
||
netstat -ano | findstr 3001
|
||
|
||
# Linux/Mac
|
||
netstat -tuln | grep -E '3000|3001'
|
||
```
|
||
|
||
2. 检查 Docker 状态:
|
||
```bash
|
||
docker ps
|
||
docker-compose ps
|
||
```
|
||
|
||
3. 查看错误日志:
|
||
```bash
|
||
docker-compose logs --tail=50
|
||
```
|
||
|
||
### 文档目录挂载失败
|
||
|
||
1. 确认目录存在:
|
||
```bash
|
||
ls -la ./docs
|
||
```
|
||
|
||
2. 检查权限:
|
||
```bash
|
||
# Linux/Mac 可能需要授权
|
||
chmod 755 ./docs
|
||
```
|
||
|
||
3. 使用绝对路径尝试
|
||
|
||
### PDF 导出失败
|
||
|
||
1. 检查容器日志:
|
||
```bash
|
||
docker-compose logs -f
|
||
```
|
||
|
||
2. 验证 Chromium 安装:
|
||
```bash
|
||
docker exec vitepress-docker which chromium
|
||
```
|
||
|
||
3. 检查文档目录权限:
|
||
```bash
|
||
docker exec vitepress-docker ls -la /app/docs
|
||
```
|
||
|
||
4. 确认 VitePress 服务正常运行:
|
||
```bash
|
||
curl http://localhost:3000
|
||
```
|
||
|
||
### 服务无法访问
|
||
|
||
1. 检查容器状态:
|
||
```bash
|
||
docker ps | grep vitepress
|
||
```
|
||
|
||
2. 检查防火墙设置:
|
||
```bash
|
||
# Windows
|
||
netsh advfirewall firewall show rule name="Docker VitePress"
|
||
```
|
||
|
||
3. 尝试重启服务:
|
||
```bash
|
||
docker-compose restart
|
||
```
|
||
|
||
## 技术栈
|
||
|
||
- **基础镜像**: Node.js 25
|
||
- **Web 服务器**: Express.js
|
||
- **文档框架**: VitePress
|
||
- **PDF 导出**: vitepress-export-pdf
|
||
- **浏览器引擎**: Chromium (Puppeteer)
|
||
- **容器化**: Docker + Docker Compose
|
||
|