Some checks failed
Build and Deploy / test-backend (push) Has been cancelled
Build and Deploy / build-backend (push) Has been cancelled
Build and Deploy / build-admin (push) Has been cancelled
Deploy to Production / build-backend (push) Has been cancelled
Deploy to Production / deploy (push) Has been cancelled
Co-authored-by: Cursor <cursoragent@cursor.com>
205 lines
4.4 KiB
Markdown
205 lines
4.4 KiB
Markdown
# 部署指南
|
||
|
||
## 概述
|
||
|
||
本项目使用 Docker 容器化部署,镜像存储在私有 Registry:`registry.667788.cool`
|
||
|
||
## 镜像信息
|
||
|
||
- **Backend**: `registry.667788.cool/wecom-backend:${TAG}`
|
||
- **Admin**: `registry.667788.cool/wecom-admin:${TAG}`
|
||
- **Nginx**: `registry.667788.cool/wecom-nginx:${TAG}`
|
||
|
||
默认 TAG: `latest`
|
||
|
||
## 本地构建
|
||
|
||
### 构建并推送镜像
|
||
|
||
```bash
|
||
# 赋予脚本执行权限(首次运行)
|
||
chmod +x scripts/build_and_push.sh
|
||
|
||
# 使用默认标签 latest
|
||
./scripts/build_and_push.sh
|
||
|
||
# 或指定标签
|
||
./scripts/build_and_push.sh v1.0.0
|
||
```
|
||
|
||
### 手动构建
|
||
|
||
```bash
|
||
# 登录 Registry
|
||
docker login registry.667788.cool
|
||
|
||
# 设置标签
|
||
export TAG=v1.0.0
|
||
|
||
# 构建镜像
|
||
docker compose -f docker-compose.release.yml build
|
||
|
||
# 推送镜像
|
||
docker compose -f docker-compose.release.yml push
|
||
```
|
||
|
||
## 云端部署
|
||
|
||
### 准备工作
|
||
|
||
1. **服务器要求**:
|
||
- Linux 服务器(Ubuntu 20.04+ / CentOS 7+)
|
||
- Docker 和 docker-compose 已安装
|
||
- 开放端口:80、443(HTTP/HTTPS)
|
||
|
||
2. **上传部署文件**:
|
||
```bash
|
||
# 创建部署目录
|
||
mkdir -p /opt/wecom-ai-assistant
|
||
cd /opt/wecom-ai-assistant
|
||
|
||
# 上传 deploy/ 目录下的所有文件
|
||
# 或使用 Git 克隆项目后复制 deploy/ 目录
|
||
```
|
||
|
||
3. **配置环境变量**:
|
||
```bash
|
||
cd /opt/wecom-ai-assistant/deploy
|
||
|
||
# 复制环境变量模板
|
||
cp .env.prod.example .env.prod
|
||
|
||
# 编辑配置文件
|
||
nano .env.prod
|
||
```
|
||
|
||
填写以下必需配置:
|
||
- `TAG`: 镜像标签(默认 latest)
|
||
- `POSTGRES_PASSWORD`: 数据库密码
|
||
- `DATABASE_URL`: 数据库连接字符串
|
||
- `WECOM_*`: 企业微信配置
|
||
- `JWT_SECRET`: JWT 密钥
|
||
|
||
### 部署步骤
|
||
|
||
```bash
|
||
# 1. 进入部署目录
|
||
cd /opt/wecom-ai-assistant/deploy
|
||
|
||
# 2. 登录 Registry(如果需要认证)
|
||
docker login registry.667788.cool
|
||
|
||
# 3. 拉取最新镜像
|
||
docker compose -f docker-compose.prod.yml --env-file .env.prod pull
|
||
|
||
# 4. 启动服务
|
||
docker compose -f docker-compose.prod.yml --env-file .env.prod up -d
|
||
|
||
# 5. 查看服务状态
|
||
docker compose -f docker-compose.prod.yml ps
|
||
|
||
# 6. 查看日志
|
||
docker compose -f docker-compose.prod.yml logs -f
|
||
```
|
||
|
||
### 验证部署
|
||
|
||
```bash
|
||
# 健康检查
|
||
curl http://localhost/api/health
|
||
|
||
# 查看服务状态
|
||
docker compose -f docker-compose.prod.yml ps
|
||
|
||
# 查看日志
|
||
docker compose -f docker-compose.prod.yml logs backend
|
||
docker compose -f docker-compose.prod.yml logs admin
|
||
docker compose -f docker-compose.prod.yml logs nginx
|
||
```
|
||
|
||
## 更新部署
|
||
|
||
### 更新到新版本
|
||
|
||
```bash
|
||
# 1. 更新环境变量中的 TAG
|
||
# 编辑 .env.prod,修改 TAG=v1.0.1
|
||
|
||
# 2. 拉取新镜像
|
||
docker compose -f docker-compose.prod.yml --env-file .env.prod pull
|
||
|
||
# 3. 重启服务
|
||
docker compose -f docker-compose.prod.yml --env-file .env.prod up -d
|
||
|
||
# 4. 验证
|
||
docker compose -f docker-compose.prod.yml ps
|
||
```
|
||
|
||
### 回滚到旧版本
|
||
|
||
```bash
|
||
# 1. 修改 .env.prod 中的 TAG 为旧版本
|
||
# TAG=v1.0.0
|
||
|
||
# 2. 拉取旧镜像
|
||
docker compose -f docker-compose.prod.yml --env-file .env.prod pull
|
||
|
||
# 3. 重启服务
|
||
docker compose -f docker-compose.prod.yml --env-file .env.prod up -d
|
||
```
|
||
|
||
## 停止和清理
|
||
|
||
```bash
|
||
# 停止服务
|
||
docker compose -f docker-compose.prod.yml --env-file .env.prod down
|
||
|
||
# 停止并删除数据卷(⚠️ 危险操作)
|
||
docker compose -f docker-compose.prod.yml --env-file .env.prod down -v
|
||
|
||
# 清理未使用的镜像
|
||
docker image prune -a
|
||
```
|
||
|
||
## 服务访问
|
||
|
||
部署成功后,服务可通过以下方式访问:
|
||
|
||
- **管理后台**: http://your-server-ip/
|
||
- **后端 API**: http://your-server-ip/api/
|
||
- **健康检查**: http://your-server-ip/api/health
|
||
|
||
## 故障排查
|
||
|
||
### 问题:无法拉取镜像
|
||
|
||
**解决方案**:
|
||
```bash
|
||
# 检查 Registry 登录状态
|
||
docker login registry.667788.cool
|
||
|
||
# 手动拉取镜像测试
|
||
docker pull registry.667788.cool/wecom-backend:latest
|
||
```
|
||
|
||
### 问题:服务启动失败
|
||
|
||
**检查项**:
|
||
1. 环境变量配置是否正确
|
||
2. 数据库连接是否正常
|
||
3. 端口是否被占用
|
||
4. 查看服务日志:`docker compose -f docker-compose.prod.yml logs`
|
||
|
||
### 问题:Nginx 无法访问后端
|
||
|
||
**解决方案**:
|
||
1. 检查网络连接:`docker network ls`
|
||
2. 检查服务是否在同一网络:`docker compose -f docker-compose.prod.yml ps`
|
||
3. 检查 Nginx 配置:`cat deploy/nginx.conf`
|
||
|
||
## 相关文档
|
||
|
||
- [生产部署详细指南](./docs/deploy.md)
|
||
- [宝塔面板部署指南](./docs/baota-docker-setup.md)
|
||
- [Docker 镜像加速配置](./docs/docker-mirror.md)
|