deotalandAi/apps/frontend/DEPLOYMENT_GUIDE.md

6.6 KiB
Raw Permalink Blame History

🚀 前端 Docker 镜像部署到后端服务器完整指南

📋 部署流程概览

本地构建 → 导出镜像 → 上传服务器 → 导入镜像 → 启动容器
     ↓           ↓           ↓           ↓           ↓
  前端负责    前端负责    前端/后端   后端负责    后端负责

👥 角色分工

🔧 前端开发者职责

  • 构建 Docker 镜像
  • 测试镜像本地运行
  • 导出镜像文件
  • 提供部署文档和配置文件

🖥️ 后端运维职责

  • 提供服务器访问权限
  • 接收镜像文件
  • 导入并运行容器
  • 配置域名和 SSL如需要

📝 步骤详解

🎯 第一步:后端提供的信息

后端需要向前端提供:

# 1. 服务器连接信息
服务器IP: 192.168.1.100
用户名: deploy
端口: 22

# 2. 部署目录
部署路径: /app/frontend

# 3. 端口信息
应用端口: 3000
域名: your-domain.com

🏗️ 第二步:前端本地构建镜像

1. 确保代码可正常构建

# 本地测试构建
npm run build

# 检查构建结果
ls -la dist/

2. 构建 Docker 镜像

# 在项目根目录执行
cd d:\work\Aiproject\DeotalandAi\apps\frontend

# 构建镜像(使用版本号标记)
docker build -t deotaland-frontend:v1.0.0 .

# 验证镜像构建成功
docker images | grep deotaland-frontend

3. 本地测试镜像

# 运行容器测试
docker run -d -p 3001:3000 --name test-frontend deotaland-frontend:v1.0.0

# 检查容器状态
docker ps

# 测试访问(本地浏览器)
# 访问: http://localhost:3001

# 停止测试容器
docker stop test-frontend
docker rm test-frontend

📦 第三步:导出镜像

1. 保存镜像为文件

# 导出镜像(文件会很大,这是正常的)
docker save -o deotaland-frontend-v1.0.0.tar deotaland-frontend:v1.0.0

# 检查文件大小
ls -lh deotaland-frontend-v1.0.0.tar

2. 压缩镜像文件(推荐)

# Windows 上压缩
powershell Compress-Archive deotaland-frontend-v1.0.0.tar deotaland-frontend-v1.0.0.tar.zip

# 或者使用 7zip
7z a deotaland-frontend-v1.0.0.tar.gz deotaland-frontend-v1.0.0.tar

🚀 第四步:上传到服务器

方法 A使用 SCP推荐

# 直接上传需要服务器SSH权限
scp deotaland-frontend-v1.0.0.tar.gz deploy@192.168.1.100:/app/frontend/

# 如果端口不是22
scp -P 2222 deotaland-frontend-v1.0.0.tar.gz deploy@192.168.1.100:/app/frontend/

方法 B使用 FTP/SFTP 工具

  • FileZilla
  • WinSCP
  • MobaXterm

方法 C通过中间存储

# 上传到云存储如阿里云OSS、AWS S3
# 后端再从云存储下载

🔧 第五步:后端导入和运行

1. 登录服务器

# 后端操作
ssh deploy@192.168.1.100

# 进入部署目录
cd /app/frontend

2. 解压文件(如果需要)

# 解压 tar.gz
gunzip deotaland-frontend-v1.0.0.tar.gz

# 或者解压 zip
unzip deotaland-frontend-v1.0.0.tar.zip

3. 导入镜像

# 导入 Docker 镜像
docker load -i deotaland-frontend-v1.0.0.tar

# 验证导入成功
docker images | grep deotaland-frontend

4. 准备部署文件

# 创建部署目录
mkdir -p /app/frontend/configs

# 上传 docker-compose 文件(前端提供)
# 保存为 docker-compose.yml

🎯 第六步:启动应用

1. 使用 docker-compose 启动

# 在包含 docker-compose.yml 的目录下执行
cd /app/frontend

# 启动服务
docker-compose -f docker-compose.prod.yml up -d

# 检查状态
docker-compose ps

# 查看日志
docker-compose logs -f

2. 验证部署成功

# 检查容器运行状态
docker ps

# 测试本地访问
curl http://localhost:3000

# 检查端口监听
netstat -tlnp | grep 3000

📁 需要提供的文件清单

📋 前端需要提供给后端的文件:

  1. 镜像文件(必需)

    deotaland-frontend-v1.0.0.tar
    
  2. docker-compose 配置文件(必需)

    docker-compose.prod.yml
    
  3. 部署文档(推荐)

    DEPLOYMENT_GUIDE.md (本文档)
    
  4. 版本信息(推荐)

    version.txt - 包含版本号和构建时间
    

🔧 常用命令速查

前端构建命令

# 构建镜像
docker build -t deotaland-frontend:v1.0.0 .

# 导出镜像
docker save -o deotaland-frontend-v1.0.0.tar deotaland-frontend:v1.0.0

# 压缩文件
gzip deotaland-frontend-v1.0.0.tar

后端部署命令

# 导入镜像
docker load -i deotaland-frontend-v1.0.0.tar

# 启动服务
docker-compose -f docker-compose.prod.yml up -d

# 查看状态
docker-compose ps

# 查看日志
docker-compose logs -f

# 停止服务
docker-compose down

# 重启服务
docker-compose restart

🚨 常见问题解决

问题 1镜像文件太大

解决方案:

  • 使用 .dockerignore 文件排除不需要的文件
  • 使用多阶段构建优化镜像大小
  • 考虑使用镜像仓库代替文件传输

问题 2上传速度慢

解决方案:

  • 使用压缩工具gzip/7zip
  • 分批上传或使用云存储中转
  • 优化网络环境

问题 3容器启动失败

排查步骤:

# 1. 查看容器状态
docker ps -a

# 2. 查看错误日志
docker logs <container-id>

# 3. 检查端口占用
netstat -tlnp | grep 3000

# 4. 检查资源使用
docker stats

问题 4服务无法访问

排查步骤:

# 1. 检查容器是否运行
docker ps

# 2. 测试容器内服务
docker exec <container-id> curl http://localhost:3000

# 3. 检查防火墙设置
sudo ufw status  # Ubuntu
sudo firewall-cmd --list-all  # CentOS

# 4. 检查云服务器安全组设置

📊 性能优化建议

镜像优化

  • 使用 Alpine Linux 基础镜像
  • 实施多阶段构建
  • 清理构建缓存

部署优化

  • 使用镜像仓库Docker Registry
  • 实施蓝绿部署
  • 配置健康检查

监控建议

  • 设置容器资源限制
  • 配置日志收集
  • 实施监控告警

🎯 下一步建议

  1. 建立 CI/CD 流程:自动化构建和部署
  2. 使用镜像仓库:替代文件传输
  3. 配置域名和 SSL:提供 HTTPS 访问
  4. 设置监控告警:及时发现问题
  5. 实施自动扩容:应对流量高峰

📞 支持联系方式

  • 前端开发支持:前端团队
  • 后端运维支持:运维团队
  • 紧急问题:电话/微信 XXX-XXXX-XXXX

最后更新时间2025年1月21日
文档版本v1.0
适用范围:前端 Docker 镜像部署到后端服务器