Files
full-stack-doc/backend/DOCKER_DEPLOYMENT_GUIDE.md
2025-10-14 20:05:29 +08:00

5.1 KiB
Raw Permalink Blame History

云盘应用 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服务器

# 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

# 1. 配置环境变量
cp .env.example .env
# 编辑.env文件设置数据库密码等

# 2. 启动服务
docker-compose up -d

# 3. 查看状态
docker-compose ps
docker-compose logs -f

方案三:可执行文件部署

适用场景: 无Docker环境或网络受限

# 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镜像

适用场景: 完全离线环境

# 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

🔧 配置说明

环境变量

# 数据库连接
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 - 应用日志目录

🏥 健康检查

应用提供内置健康检查:

# 检查应用状态
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. 容器无法启动

    # 查看容器日志
    docker logs cloud-drive-backend
    
    # 检查端口占用
    netstat -tulpn | grep 8002
    
  2. 数据库连接失败

    • 检查数据库服务状态
    • 验证连接字符串
    • 确认网络连通性
  3. 文件上传问题

    • 检查uploads目录权限
    • 确认磁盘空间
    • 验证文件大小限制

调试命令

# 进入容器调试
docker exec -it cloud-drive-backend /bin/bash

# 查看应用日志
docker logs -f cloud-drive-backend

# 检查容器资源使用
docker stats cloud-drive-backend

📈 扩展部署

负载均衡

使用多个实例配合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. 自动化: 一键部署脚本支持

选择适合你环境的部署方案即可!