feat(admin): 添加用户管理相关文件
添加用户管理视图、API和状态管理文件
This commit is contained in:
+349
@@ -0,0 +1,349 @@
|
||||
# CI/CD部署文档
|
||||
|
||||
## 架构概览
|
||||
|
||||
本项目采用Forgejo + Woodpecker CI + Docker Registry的CI/CD架构,通过docker-compose进行容器化部署。
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────┐
|
||||
│ Forgejo (代码仓库) │
|
||||
│ Woodpecker CI (CI/CD) │
|
||||
│ Docker Registry (镜像仓库) │
|
||||
└─────────────────────────────────────────────────────────────┘
|
||||
↓
|
||||
构建Docker镜像并推送
|
||||
↓
|
||||
┌─────────────────────────────────────────────────────────────┐
|
||||
│ docker-compose 部署 │
|
||||
├─────────────────────────────────────────────────────────────┤
|
||||
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
|
||||
│ │ API容器 │ │ Admin容器 │ │ UniApp容器 │ │
|
||||
│ │ (Spring Boot) │ │ (Nginx) │ │ (Nginx) │ │
|
||||
│ └──────────────┘ └──────────────┘ └──────────────┘ │
|
||||
│ ┌──────────────┐ │
|
||||
│ │ PostgreSQL │ │
|
||||
│ └──────────────┘ │
|
||||
└─────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
## 项目结构
|
||||
|
||||
```
|
||||
everything-is-suitable/
|
||||
├── everything-is-suitable-api/ # Spring Boot API
|
||||
│ ├── Dockerfile # API镜像构建文件
|
||||
│ └── pom.xml # Maven配置
|
||||
├── everything-is-suitable-admin/ # Vue 3 Admin
|
||||
│ ├── Dockerfile # Admin镜像构建文件
|
||||
│ ├── nginx.conf # Nginx配置
|
||||
│ └── package.json # npm配置
|
||||
├── everything-is-suitable-uniapp/ # UniApp移动端
|
||||
│ ├── Dockerfile # UniApp镜像构建文件
|
||||
│ ├── nginx.conf # Nginx配置
|
||||
│ └── package.json # npm配置
|
||||
├── docker-compose.yml # 生产环境部署编排
|
||||
└── .woodpecker.yml # Woodpecker CI配置
|
||||
```
|
||||
|
||||
## 本地开发
|
||||
|
||||
### 前置要求
|
||||
|
||||
- Docker 20.10+
|
||||
- Docker Compose 2.0+
|
||||
- Node.js 20+
|
||||
- Java 21+
|
||||
- Maven 3.9+
|
||||
|
||||
### 启动开发环境
|
||||
|
||||
```bash
|
||||
# 启动数据库
|
||||
docker-compose up -d postgres
|
||||
|
||||
# 启动API
|
||||
cd everything-is-suitable-api
|
||||
mvn spring-boot:run -Dspring-boot.run.profiles=local
|
||||
|
||||
# 启动Admin
|
||||
cd ../everything-is-suitable-admin
|
||||
npm run dev
|
||||
|
||||
# 启动UniApp
|
||||
cd ../everything-is-suitable-uniapp
|
||||
npm run dev:h5
|
||||
```
|
||||
|
||||
## CI/CD流程
|
||||
|
||||
### Woodpecker CI流水线
|
||||
|
||||
Woodpecker CI在每次代码提交时自动执行以下步骤:
|
||||
|
||||
1. **代码检查**
|
||||
- API: `mvn spotless:check`
|
||||
- Admin: `npm run lint`
|
||||
- UniApp: `npm run lint`
|
||||
|
||||
2. **单元测试**
|
||||
- API: `mvn test`
|
||||
- Admin: `npm run test`
|
||||
- UniApp: `npm run test`
|
||||
|
||||
3. **E2E测试**
|
||||
- Admin: `npm run test:e2e`
|
||||
- UniApp: `npm run test:e2e`
|
||||
|
||||
4. **构建Docker镜像**
|
||||
- 推送到Docker Registry
|
||||
- 标签: `latest` 和 `${CI_COMMIT_SHA:0:8}`
|
||||
|
||||
5. **部署**
|
||||
- SSH连接到部署服务器
|
||||
- 拉取最新镜像
|
||||
- 重启容器
|
||||
|
||||
### Woodpecker Secrets配置
|
||||
|
||||
在Forgejo仓库设置中配置以下Secrets:
|
||||
|
||||
| Secret名称 | 说明 | 示例 |
|
||||
|-----------|------|------|
|
||||
| `DOCKER_REGISTRY` | Docker Registry地址 | `registry.example.com` |
|
||||
| `DOCKER_USERNAME` | Docker用户名 | `your-username` |
|
||||
| `DOCKER_PASSWORD` | Docker密码 | `your-password` |
|
||||
| `SSH_PRIVATE_KEY` | SSH私钥 | `-----BEGIN RSA PRIVATE KEY-----...` |
|
||||
| `DEPLOY_HOST` | 部署服务器地址 | `deploy.example.com` |
|
||||
| `DEPLOY_USER` | 部署服务器用户名 | `deploy` |
|
||||
| `DEPLOY_PATH` | 部署路径 | `/opt/everything-is-suitable` |
|
||||
|
||||
## 生产部署
|
||||
|
||||
### 1. 准备部署环境
|
||||
|
||||
```bash
|
||||
# 安装Docker和Docker Compose
|
||||
curl -fsSL https://get.docker.com | sh
|
||||
sudo usermod -aG docker $USER
|
||||
|
||||
# 创建部署目录
|
||||
mkdir -p /opt/everything-is-suitable
|
||||
cd /opt/everything-is-suitable
|
||||
|
||||
# 复制配置文件
|
||||
cp docker-compose.yml .
|
||||
cp .env.example .env
|
||||
```
|
||||
|
||||
### 2. 配置环境变量
|
||||
|
||||
编辑 `.env` 文件:
|
||||
|
||||
```bash
|
||||
# 数据库密码
|
||||
POSTGRES_PASSWORD=your_secure_password
|
||||
|
||||
# Docker Registry配置
|
||||
DOCKER_REGISTRY=registry.example.com
|
||||
DOCKER_USERNAME=your-username
|
||||
DOCKER_PASSWORD=your-password
|
||||
```
|
||||
|
||||
### 3. 启动服务
|
||||
|
||||
```bash
|
||||
# 拉取镜像
|
||||
docker-compose pull
|
||||
|
||||
# 启动所有服务
|
||||
docker-compose up -d
|
||||
|
||||
# 查看服务状态
|
||||
docker-compose ps
|
||||
|
||||
# 查看日志
|
||||
docker-compose logs -f
|
||||
```
|
||||
|
||||
### 4. 验证部署
|
||||
|
||||
```bash
|
||||
# 检查API健康状态
|
||||
curl http://localhost:8080/actuator/health
|
||||
|
||||
# 检查Admin页面
|
||||
curl http://localhost/
|
||||
|
||||
# 检查UniApp页面
|
||||
curl http://localhost:8081/
|
||||
```
|
||||
|
||||
## 服务端口
|
||||
|
||||
| 服务 | 端口 | 说明 |
|
||||
|------|------|------|
|
||||
| Admin | 80 | 管理后台 |
|
||||
| API | 8080 | 后端API |
|
||||
| UniApp | 8081 | 移动端H5 |
|
||||
| PostgreSQL | 5432 | 数据库 |
|
||||
|
||||
## 常用命令
|
||||
|
||||
### Docker Compose
|
||||
|
||||
```bash
|
||||
# 启动所有服务
|
||||
docker-compose up -d
|
||||
|
||||
# 停止所有服务
|
||||
docker-compose down
|
||||
|
||||
# 重启服务
|
||||
docker-compose restart
|
||||
|
||||
# 查看日志
|
||||
docker-compose logs -f [service-name]
|
||||
|
||||
# 查看服务状态
|
||||
docker-compose ps
|
||||
|
||||
# 更新镜像并重启
|
||||
docker-compose pull && docker-compose up -d
|
||||
```
|
||||
|
||||
### 容器管理
|
||||
|
||||
```bash
|
||||
# 查看运行中的容器
|
||||
docker ps
|
||||
|
||||
# 查看容器日志
|
||||
docker logs -f [container-id]
|
||||
|
||||
# 进入容器
|
||||
docker exec -it [container-id] sh
|
||||
|
||||
# 重启容器
|
||||
docker restart [container-id]
|
||||
```
|
||||
|
||||
## 监控和日志
|
||||
|
||||
### 日志查看
|
||||
|
||||
```bash
|
||||
# API日志
|
||||
docker-compose logs -f api
|
||||
|
||||
# Admin日志
|
||||
docker-compose logs -f admin
|
||||
|
||||
# UniApp日志
|
||||
docker-compose logs -f uniapp
|
||||
|
||||
# 数据库日志
|
||||
docker-compose logs -f postgres
|
||||
|
||||
# 所有服务日志
|
||||
docker-compose logs -f
|
||||
```
|
||||
|
||||
### 健康检查
|
||||
|
||||
```bash
|
||||
# 检查所有服务健康状态
|
||||
docker-compose ps
|
||||
|
||||
# 检查API健康端点
|
||||
curl http://localhost:8080/actuator/health
|
||||
|
||||
# 检查数据库连接
|
||||
docker-compose exec postgres pg_isready -U postgres
|
||||
```
|
||||
|
||||
## 备份和恢复
|
||||
|
||||
### 数据库备份
|
||||
|
||||
```bash
|
||||
# 备份数据库
|
||||
docker-compose exec postgres pg_dump -U postgres everything_is_suitable > backup.sql
|
||||
|
||||
# 恢复数据库
|
||||
docker-compose exec -T postgres psql -U postgres everything_is_suitable < backup.sql
|
||||
```
|
||||
|
||||
### 数据卷备份
|
||||
|
||||
```bash
|
||||
# 备份PostgreSQL数据卷
|
||||
docker run --rm -v everything-is-suitable_postgres_data:/data -v $(pwd):/backup alpine tar czf /backup/postgres_data_backup.tar.gz -C /data .
|
||||
|
||||
# 恢复PostgreSQL数据卷
|
||||
docker run --rm -v everything-is-suitable_postgres_data:/data -v $(pwd):/backup alpine tar xzf /backup/postgres_data_backup.tar.gz -C /data
|
||||
```
|
||||
|
||||
## 故障排查
|
||||
|
||||
### 容器无法启动
|
||||
|
||||
```bash
|
||||
# 查看容器日志
|
||||
docker-compose logs [service-name]
|
||||
|
||||
# 检查容器状态
|
||||
docker-compose ps
|
||||
|
||||
# 检查资源使用
|
||||
docker stats
|
||||
```
|
||||
|
||||
### 网络问题
|
||||
|
||||
```bash
|
||||
# 检查网络连接
|
||||
docker network ls
|
||||
docker network inspect everything-is-suitable_app-network
|
||||
|
||||
# 测试容器间连接
|
||||
docker-compose exec api ping postgres
|
||||
```
|
||||
|
||||
### 性能问题
|
||||
|
||||
```bash
|
||||
# 查看资源使用
|
||||
docker stats
|
||||
|
||||
# 查看容器资源限制
|
||||
docker inspect [container-id] | grep -A 10 Memory
|
||||
```
|
||||
|
||||
## 安全建议
|
||||
|
||||
1. **修改默认密码**
|
||||
- 修改PostgreSQL密码
|
||||
|
||||
2. **网络隔离**
|
||||
- 使用Docker网络隔离服务
|
||||
- 只暴露必要的端口
|
||||
|
||||
3. **定期更新**
|
||||
- 定期更新Docker镜像
|
||||
- 更新依赖包
|
||||
|
||||
4. **备份策略**
|
||||
- 定期备份数据库
|
||||
- 备份配置文件
|
||||
|
||||
5. **监控告警**
|
||||
- 配置Prometheus监控
|
||||
- 配置Grafana仪表盘
|
||||
- 设置告警规则
|
||||
|
||||
## 扩展阅读
|
||||
|
||||
- [Docker Compose文档](https://docs.docker.com/compose/)
|
||||
- [Woodpecker CI文档](https://woodpecker-ci.org/docs/)
|
||||
- [Spring Boot Docker部署](https://spring.io/guides/topicals/spring-boot-docker/)
|
||||
- [Nginx配置指南](https://nginx.org/en/docs/)
|
||||
Reference in New Issue
Block a user