Add DevOps release and deployment configuration
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
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>
This commit is contained in:
204
README_DEPLOY.md
Normal file
204
README_DEPLOY.md
Normal file
@@ -0,0 +1,204 @@
|
||||
# 部署指南
|
||||
|
||||
## 概述
|
||||
|
||||
本项目使用 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)
|
||||
Reference in New Issue
Block a user