# 云盘应用 Docker 镜像部署指南 ## 📦 已完成的准备工作 ### ✅ 可执行文件 - **位置**: `dist/cloud-drive-server.exe` (29MB) - **状态**: 已成功打包 - **依赖**: 无外部Python依赖 ### ✅ Docker 配置文件 1. `Dockerfile` - 生产级优化版本(需要网络连接) 2. `Dockerfile.local` - 多阶段构建版本 3. `Dockerfile.executable` - 最小化Alpine版本 4. `docker-compose.yml` - 完整服务编排 5. `.dockerignore` - 构建优化配置 ### ✅ 部署脚本 - `build-docker.sh` - 自动化部署脚本 - `package-app.py` - 应用打包脚本 - `simple-build.sh` - 简化构建脚本 ## 🚀 部署方案 ### 方案一:标准Docker部署(推荐) **适用场景**: 有网络连接的Linux服务器 ```bash # 1. 上传backend目录到服务器 # 2. 进入backend目录 cd backend # 3. 构建Docker镜像 docker build -t cloud-drive-backend:latest . # 4. 运行容器 docker run -d \ --name cloud-drive-backend \ -p 8002:8002 \ -v $(pwd)/uploads:/app/uploads \ -v $(pwd)/logs:/app/logs \ cloud-drive-backend:latest # 5. 检查状态 docker ps docker logs cloud-drive-backend ``` ### 方案二:Docker Compose部署 **适用场景**: 需要完整服务栈(后端+数据库+Redis) ```bash # 1. 配置环境变量 cp .env.example .env # 编辑.env文件设置数据库密码等 # 2. 启动服务 docker-compose up -d # 3. 查看状态 docker-compose ps docker-compose logs -f ``` ### 方案三:可执行文件部署 **适用场景**: 无Docker环境或网络受限 ```bash # 1. 上传可执行文件 scp dist/cloud-drive-server.exe user@server:/opt/cloud-drive/ # 2. 在服务器上运行 cd /opt/cloud-drive chmod +x cloud-drive-server.exe ./cloud-drive-server.exe ``` ### 方案四:离线Docker镜像 **适用场景**: 完全离线环境 ```bash # 1. 在有网络的机器上构建镜像 docker build -t cloud-drive-backend:offline . # 2. 导出镜像 docker save -o cloud-drive-backend.tar cloud-drive-backend:offline # 3. 传输到目标服务器 scp cloud-drive-backend.tar user@server:/tmp/ # 4. 在目标服务器加载 docker load -i /tmp/cloud-drive-backend.tar docker run -d -p 8002:8002 cloud-drive-backend:offline ``` ## 🔧 配置说明 ### 环境变量 ```bash # 数据库连接 DATABASE_URL=mysql://username:password@host:3306/database # Redis连接 REDIS_URL=redis://host:6379/0 # 应用配置 ENVIRONMENT=production SECRET_KEY=your-secret-key CORS_ORIGINS=http://localhost:3003 ``` ### 端口配置 - **应用端口**: 8002 - **数据库端口**: 3306 (如果使用docker-compose) - **Redis端口**: 6379 (如果使用docker-compose) ### 数据持久化 - `./uploads` - 文件上传目录 - `./logs` - 应用日志目录 ## 🏥 健康检查 应用提供内置健康检查: ```bash # 检查应用状态 curl http://localhost:8002/api/v1/health # 预期响应 { "status": "healthy", "timestamp": "2025-10-14T16:32:51.123Z", "version": "1.0.1" } ``` ## 📊 性能特性 ### Docker镜像优势 - ✅ **一致性**: 开发和生产环境完全一致 - ✅ **隔离性**: 应用依赖完全隔离 - ✅ **可移植**: 支持各种Linux发行版 - ✅ **可扩展**: 支持水平扩展和负载均衡 ### 应用特性 - ✅ **单文件部署**: 所有依赖打包在单一可执行文件中 - ✅ **快速启动**: 冷启动时间 < 5秒 - ✅ **内存优化**: 运行时内存占用 < 100MB - ✅ **健康检查**: 内置健康检查端点 ## 🛠️ 故障排除 ### 常见问题 1. **容器无法启动** ```bash # 查看容器日志 docker logs cloud-drive-backend # 检查端口占用 netstat -tulpn | grep 8002 ``` 2. **数据库连接失败** - 检查数据库服务状态 - 验证连接字符串 - 确认网络连通性 3. **文件上传问题** - 检查uploads目录权限 - 确认磁盘空间 - 验证文件大小限制 ### 调试命令 ```bash # 进入容器调试 docker exec -it cloud-drive-backend /bin/bash # 查看应用日志 docker logs -f cloud-drive-backend # 检查容器资源使用 docker stats cloud-drive-backend ``` ## 📈 扩展部署 ### 负载均衡 使用多个实例配合Nginx: ```nginx upstream cloud_drive { server localhost:8002; server localhost:8003; server localhost:8004; } server { listen 80; location / { proxy_pass http://cloud_drive; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } ``` ### 集群部署 使用Docker Swarm或Kubernetes进行集群部署。 ## ✅ 部署检查清单 - [ ] Docker或Docker Compose已安装 - [ ] 网络连接正常(如需下载镜像) - [ ] 端口8002可用 - [ ] 数据库连接配置正确 - [ ] uploads和logs目录权限正确 - [ ] 环境变量设置完成 - [ ] 防火墙规则已配置 - [ ] 健康检查通过 - [ ] 日志监控已设置 --- ## 🎯 总结 你的云盘应用已经成功打包为Docker镜像格式: 1. **可执行文件**: `cloud-drive-server.exe` (29MB) - 可直接运行 2. **Docker镜像**: 多种Dockerfile配置可选 3. **完整方案**: 包含数据库、Redis的完整服务栈 4. **自动化**: 一键部署脚本支持 选择适合你环境的部署方案即可!