Docker 部署指南

使用 Docker 快速部署 GEO Wiki Pro 到本地或服务器的完整指南

# Docker 部署指南 > 使用 Docker 一键部署 GEO Wiki Pro,支持本地开发和服务器生产环境 --- ## 📋 前置条件 | 条件 | 最低要求 | |------|----------| | 操作系统 | Linux / macOS / Windows (WSL2) | | Docker | 20.10+ | | Docker Compose | v2.0+ | | 内存 | 1GB+ | | 磁盘空间 | 500MB+ | --- ## 🚀 快速部署(3 步完成) ### 第 1 步:克隆项目 ```bash git clone https://github.com/your-org/geo-wiki-pro.git cd geo-wiki-pro ``` ### 第 2 步:配置环境变量 ```bash cp .env.example .env ``` 编辑 `.env` 文件,设置必要参数: ```env # 必填:JWT 密钥(至少 32 个字符) JWT_SECRET=your-super-secret-key-here # 可选配置 PORT=3002 CORS_ORIGINS=http://localhost:3000 RATE_LIMIT_WINDOW_MS=60000 RATE_LIMIT_MAX_REQUESTS=300 ``` ::: warning 请务必设置一个强随机的 `JWT_SECRET`。生产环境中不要使用默认值。 ::: ### 第 3 步:启动服务 ```bash docker compose up -d ``` 验证服务状态: ```bash curl http://localhost:3002/api/v1/health ``` 预期输出: ```json { "status": "ok", "version": "2.9.0" } ``` --- ## 🏗️ 架构说明 GEO Wiki Pro 采用前后端分离架构: ``` ┌─────────────────┐ ┌─────────────────┐ │ Nginx │────▶│ Express.js │ │ (静态前端) │ │ (API 后端) │ │ 端口: 80/443 │ │ 端口: 3002 │ └─────────────────┘ └─────────────────┘ │ ▼ ┌─────────────┐ │ 文件系统 │ │ data/ │ │ public/ │ └─────────────┘ ``` ### 服务组件 | 组件 | 说明 | 端口 | |------|------|------| | Nginx | 反向代理 + 静态文件服务 | 80/443 | | Express.js | API 服务器 | 3002 | | 文件存储 | Markdown 文档 + 媒体文件 | - | --- ## ⚙️ 高级配置 ### 自定义端口 修改 `docker-compose.yml` 中的端口映射: ```yaml services: api: ports: - "8080:3002" # 外部端口:内部端口 ``` ### 挂载数据目录 将数据持久化到宿主机: ```yaml services: api: volumes: - ./data:/app/data - ./public/media:/app/public/media ``` ### 配置 HTTPS 在生产环境中,建议使用反向代理配置 HTTPS: ```nginx server { listen 443 ssl; server_name wiki.example.com; ssl_certificate /etc/ssl/certs/wiki.example.com.pem; ssl_certificate_key /etc/ssl/private/wiki.example.com.key; location / { proxy_pass http://localhost:3002; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } ``` --- ## 🔒 安全配置 ### 首次登录 部署完成后,系统会自动创建管理员账号: 1. 访问 `http://your-server:3002/login` 2. 使用默认管理员账号登录 3. **立即修改默认密码** ### 环境变量安全 | 变量 | 说明 | 安全建议 | |------|------|----------| | `JWT_SECRET` | JWT 签名密钥 | 使用 `openssl rand -base64 32` 生成 | | `CORS_ORIGINS` | 允许的跨域来源 | 生产环境限制为实际域名 | | `RATE_LIMIT_*` | 限流配置 | 根据预期访问量调整 | ::: danger 永远不要将 `.env` 文件提交到版本控制系统(Git)。确保 `.gitignore` 中包含 `.env`。 ::: --- ## 🐛 常见问题 ### 容器启动失败 ```bash # 查看日志 docker compose logs api # 常见原因: # 1. .env 文件未配置 JWT_SECRET # 2. 端口被占用 # 3. Docker 权限不足 ``` ### 数据持久化 ```bash # 检查数据目录 ls -la data/ # 备份数据 tar -czf backup-$(date +%Y%m%d).tar.gz data/ public/media/ ``` ### 更新版本 ```bash # 拉取最新代码 git pull origin main # 重新构建并启动 docker compose down docker compose build --no-cache api docker compose up -d ``` --- ## 📊 监控与维护 ### 健康检查 ```bash # API 健康状态 curl http://localhost:3002/api/v1/health # Docker 容器状态 docker compose ps ``` ### 日志查看 ```bash # 实时日志 docker compose logs -f api # 最近 100 行日志 docker compose logs --tail 100 api ``` --- ## 📚 下一步 - [创建第一个知识库](/docs/first-knowledge-base) - 从零搭建产品知识库 - [快速入门指南](/docs/quick-start) - 5 分钟快速上手产品开发 - [FAQ](/docs/faq) - 常见问题解答 --- *最后更新: 2026-05-26 | 版本: v2.9.0*