deotalandAi/apps/frontend/DEPLOYMENT_GUIDE.md

349 lines
6.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🚀 前端 Docker 镜像部署到后端服务器完整指南
## 📋 部署流程概览
```
本地构建 → 导出镜像 → 上传服务器 → 导入镜像 → 启动容器
↓ ↓ ↓ ↓ ↓
前端负责 前端负责 前端/后端 后端负责 后端负责
```
---
## 👥 角色分工
### 🔧 前端开发者职责
- ✅ 构建 Docker 镜像
- ✅ 测试镜像本地运行
- ✅ 导出镜像文件
- ✅ 提供部署文档和配置文件
### 🖥️ 后端运维职责
- ✅ 提供服务器访问权限
- ✅ 接收镜像文件
- ✅ 导入并运行容器
- ✅ 配置域名和 SSL如需要
---
## 📝 步骤详解
### 🎯 第一步:后端提供的信息
**后端需要向前端提供:**
```bash
# 1. 服务器连接信息
服务器IP: 192.168.1.100
用户名: deploy
端口: 22
# 2. 部署目录
部署路径: /app/frontend
# 3. 端口信息
应用端口: 3000
域名: your-domain.com
```
### 🏗️ 第二步:前端本地构建镜像
#### 1. 确保代码可正常构建
```bash
# 本地测试构建
npm run build
# 检查构建结果
ls -la dist/
```
#### 2. 构建 Docker 镜像
```bash
# 在项目根目录执行
cd d:\work\Aiproject\DeotalandAi\apps\frontend
# 构建镜像(使用版本号标记)
docker build -t deotaland-frontend:v1.0.0 .
# 验证镜像构建成功
docker images | grep deotaland-frontend
```
#### 3. 本地测试镜像
```bash
# 运行容器测试
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. 保存镜像为文件
```bash
# 导出镜像(文件会很大,这是正常的)
docker save -o deotaland-frontend-v1.0.0.tar deotaland-frontend:v1.0.0
# 检查文件大小
ls -lh deotaland-frontend-v1.0.0.tar
```
#### 2. 压缩镜像文件(推荐)
```bash
# 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推荐
```bash
# 直接上传需要服务器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通过中间存储
```bash
# 上传到云存储如阿里云OSS、AWS S3
# 后端再从云存储下载
```
### 🔧 第五步:后端导入和运行
#### 1. 登录服务器
```bash
# 后端操作
ssh deploy@192.168.1.100
# 进入部署目录
cd /app/frontend
```
#### 2. 解压文件(如果需要)
```bash
# 解压 tar.gz
gunzip deotaland-frontend-v1.0.0.tar.gz
# 或者解压 zip
unzip deotaland-frontend-v1.0.0.tar.zip
```
#### 3. 导入镜像
```bash
# 导入 Docker 镜像
docker load -i deotaland-frontend-v1.0.0.tar
# 验证导入成功
docker images | grep deotaland-frontend
```
#### 4. 准备部署文件
```bash
# 创建部署目录
mkdir -p /app/frontend/configs
# 上传 docker-compose 文件(前端提供)
# 保存为 docker-compose.yml
```
### 🎯 第六步:启动应用
#### 1. 使用 docker-compose 启动
```bash
# 在包含 docker-compose.yml 的目录下执行
cd /app/frontend
# 启动服务
docker-compose -f docker-compose.prod.yml up -d
# 检查状态
docker-compose ps
# 查看日志
docker-compose logs -f
```
#### 2. 验证部署成功
```bash
# 检查容器运行状态
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 - 包含版本号和构建时间
```
---
## 🔧 常用命令速查
### 前端构建命令
```bash
# 构建镜像
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
```
### 后端部署命令
```bash
# 导入镜像
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容器启动失败
**排查步骤:**
```bash
# 1. 查看容器状态
docker ps -a
# 2. 查看错误日志
docker logs <container-id>
# 3. 检查端口占用
netstat -tlnp | grep 3000
# 4. 检查资源使用
docker stats
```
### 问题 4服务无法访问
**排查步骤:**
```bash
# 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 镜像部署到后端服务器