Selaa lähdekoodia

'不需要Docker.md'

admincjy 1 kuukausi sitten
vanhempi
commit
dbdf69b3d6
1 muutettua tiedostoa jossa 0 lisäystä ja 381 poistoa
  1. 0 381
      DOCKER.md

+ 0 - 381
DOCKER.md

@@ -1,381 +0,0 @@
-# Docker 部署指南
-
-本文档说明如何使用 Docker 部署 CJYDocs 文档管理系统。
-
-## 快速开始
-
-```bash
-# 1. 构建镜像
-docker build -t cjydocs:latest .
-
-# 2. 运行容器
-docker run -d \
-  --name cjydocs \
-  -p 3000:3000 \
-  -v $(pwd)/docs:/app/docs \
-  -v $(pwd)/index.md:/app/index.md \
-  --restart unless-stopped \
-  cjydocs:latest
-
-# 3. 查看日志
-docker logs -f cjydocs
-
-# 4. 停止容器
-docker stop cjydocs
-
-# 5. 删除容器
-docker rm cjydocs
-```
-
-## 镜像说明
-
-### 镜像特性
-
-- **基础镜像**: Node.js 18 Alpine (轻量级)
-- **镜像大小**: 约 150MB
-- **健康检查**: 自动检测应用状态
-
-### 多阶段构建
-
-Dockerfile 采用多阶段构建优化镜像大小:
-
-1. **构建阶段**: 安装生产依赖
-2. **运行阶段**: 只复制必要文件,减小镜像体积
-
-## 卷挂载说明
-
-### 必需挂载
-
-```bash
--v $(pwd)/docs:/app/docs          # 文档存储目录
--v $(pwd)/index.md:/app/index.md  # 文档结构配置
-```
-
-### 可选挂载
-
-```bash
-# 自定义样式
--v $(pwd)/public/css/style.css:/app/public/css/style.css
-
-# 自定义前端脚本
--v $(pwd)/public/js:/app/public/js
-```
-
-## 环境变量
-
-| 变量名 | 默认值 | 说明 |
-|--------|--------|------|
-| `NODE_ENV` | `production` | Node.js 运行环境 |
-| `PORT` | `3000` | 应用监听端口 |
-
-## 端口映射
-
-| 容器端口 | 宿主机端口 | 说明 |
-|----------|------------|------|
-| `3000` | `3000` | HTTP 服务端口 |
-
-可以修改 docker run 命令中的端口映射:
-
-```bash
-# 映射到宿主机 8080 端口
-docker run -d -p 8080:3000 ...
-```
-
-## 数据持久化
-
-### 文档数据
-
-所有文档存储在 `./docs` 目录,通过卷挂载持久化:
-
-```bash
-# 宿主机目录结构
-docs/
-├── 分类1/
-│   ├── 文档A.md
-│   └── 文档B.md
-└── 分类2/
-    └── 文档C.md
-```
-
-在宿主机修改文档后,容器内立即生效(有5秒缓存)。
-
-### 配置文件
-
-`index.md` 定义文档结构,修改后刷新浏览器即可看到变化。
-
-## 常用操作
-
-### 查看容器状态
-
-```bash
-docker ps | grep cjydocs
-```
-
-### 进入容器
-
-```bash
-docker exec -it cjydocs sh
-```
-
-### 查看实时日志
-
-```bash
-docker logs -f cjydocs
-```
-
-### 更新应用
-
-```bash
-# 1. 停止并删除旧容器
-docker stop cjydocs
-docker rm cjydocs
-
-# 2. 重新构建镜像
-docker build --no-cache -t cjydocs:latest .
-
-# 3. 启动新容器
-docker run -d \
-  --name cjydocs \
-  -p 3000:3000 \
-  -v $(pwd)/docs:/app/docs \
-  -v $(pwd)/index.md:/app/index.md \
-  --restart unless-stopped \
-  cjydocs:latest
-```
-
-### 备份文档
-
-```bash
-# 备份整个 docs 目录
-tar -czf docs_backup_$(date +%Y%m%d).tar.gz docs/ index.md
-
-# 从容器中导出数据
-docker cp cjydocs:/app/docs ./docs_backup/
-docker cp cjydocs:/app/index.md ./docs_backup/
-```
-
-### 恢复文档
-
-```bash
-# 解压备份
-tar -xzf docs_backup_20231201.tar.gz
-
-# 重启容器使更改生效
-docker restart cjydocs
-```
-
-## 资源限制
-
-可以使用 Docker 命令行参数限制容器资源:
-
-```bash
-docker run -d \
-  --name cjydocs \
-  --cpus="1" \              # 最多使用 1 个 CPU 核心
-  --memory="512m" \         # 最多使用 512MB 内存
-  -p 3000:3000 \
-  -v $(pwd)/docs:/app/docs \
-  -v $(pwd)/index.md:/app/index.md \
-  --restart unless-stopped \
-  cjydocs:latest
-```
-
-## 健康检查
-
-Dockerfile 中已配置健康检查,每 30 秒自动检查一次应用状态。
-
-查看健康状态:
-
-```bash
-docker inspect --format='{{.State.Health.Status}}' cjydocs
-```
-
-## 日志管理
-
-可以通过 Docker 命令行参数配置日志:
-
-```bash
-docker run -d \
-  --name cjydocs \
-  --log-driver json-file \
-  --log-opt max-size=10m \
-  --log-opt max-file=3 \
-  -p 3000:3000 \
-  -v $(pwd)/docs:/app/docs \
-  -v $(pwd)/index.md:/app/index.md \
-  --restart unless-stopped \
-  cjydocs:latest
-```
-
-这样配置后,总日志占用不超过 30MB (10MB × 3 个文件)。
-
-## 网络配置
-
-### 反向代理 (Nginx)
-
-如果使用 Nginx 作为反向代理:
-
-```nginx
-server {
-    listen 80;
-    server_name docs.example.com;
-
-    location / {
-        proxy_pass http://localhost:3000;
-        proxy_http_version 1.1;
-        proxy_set_header Upgrade $http_upgrade;
-        proxy_set_header Connection 'upgrade';
-        proxy_set_header Host $host;
-        proxy_cache_bypass $http_upgrade;
-        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;
-    }
-}
-```
-
-### Docker 网络
-
-如果需要多个容器通信,可以创建自定义网络:
-
-```bash
-# 创建网络
-docker network create app-network
-
-# 运行容器时连接到网络
-docker run -d \
-  --name cjydocs \
-  --network app-network \
-  -p 3000:3000 \
-  -v $(pwd)/docs:/app/docs \
-  -v $(pwd)/index.md:/app/index.md \
-  cjydocs:latest
-
-# 其他容器也连接到同一网络
-docker run -d \
-  --name nginx \
-  --network app-network \
-  -p 80:80 \
-  nginx:alpine
-```
-
-## 故障排查
-
-### 容器无法启动
-
-```bash
-# 查看详细日志
-docker logs cjydocs
-
-# 检查端口占用
-netstat -an | grep 3000
-# Windows: netstat -an | findstr 3000
-
-# 检查卷挂载权限
-ls -la docs/
-```
-
-### 健康检查失败
-
-```bash
-# 进入容器手动测试
-docker exec -it cjydocs sh
-wget -O- http://localhost:3000/api/structure
-```
-
-### 文档修改不生效
-
-- 等待 5 秒缓存过期
-- 检查文件挂载是否正确: `docker exec cjydocs ls -la /app/docs`
-- 重启容器: `docker restart cjydocs`
-
-### 性能问题
-
-- 调整资源限制
-- 检查日志是否有错误
-- 监控容器资源使用: `docker stats cjydocs`
-
-## 生产环境建议
-
-### 1. 使用环境变量管理配置
-
-通过 Docker 命令行传递环境变量:
-
-```bash
-docker run -d \
-  --name cjydocs \
-  -e NODE_ENV=production \
-  -e PORT=3000 \
-  -p 3000:3000 \
-  -v $(pwd)/docs:/app/docs \
-  -v $(pwd)/index.md:/app/index.md \
-  --restart unless-stopped \
-  cjydocs:latest
-```
-
-### 2. 启用 HTTPS
-
-使用 Let's Encrypt + Nginx 反向代理,或使用 Traefik。
-
-### 3. 定期备份
-
-设置定时任务备份 `docs/` 和 `index.md`。
-
-### 4. 监控
-
-- 使用 Prometheus + Grafana 监控容器资源
-- 配置日志收集 (ELK/Loki)
-- 设置告警规则
-
-### 5. 更新策略
-
-- 测试环境验证新版本
-- 使用蓝绿部署或滚动更新
-- 保持数据备份
-
-## 安全建议
-
-1. **最小权限原则**: 只暴露必要的端口和挂载必要的卷
-2. **定期更新**: 更新基础镜像和依赖包
-3. **网络隔离**: 使用 Docker 网络隔离容器
-4. **镜像扫描**: 使用 `docker scan` 扫描镜像漏洞
-
-```bash
-docker scan cjydocs:latest
-```
-
-## 常见问题
-
-### Q: 如何修改端口?
-
-A: 修改 docker run 命令中的端口映射:
-
-```bash
-docker run -d -p 8080:3000 ...  # 宿主机使用 8080 端口
-```
-
-### Q: 如何添加新文档?
-
-A: 直接在宿主机 `docs/` 目录下添加文件,并更新 `index.md`,无需重启容器。
-
-### Q: 如何查看容器内的文件?
-
-A: 使用 `docker exec`:
-
-```bash
-docker exec cjydocs ls -la /app/docs
-```
-
-### Q: 容器占用多少资源?
-
-A: 查看实时资源使用:
-
-```bash
-docker stats cjydocs
-```
-
-## 相关链接
-
-- [Docker 官方文档](https://docs.docker.com/)
-- [Node.js Alpine 镜像](https://hub.docker.com/_/node)
-- [Dockerfile 最佳实践](https://docs.docker.com/develop/develop-images/dockerfile_best-practices/)