Files
张翔 08ea5fbe98 feat(admin): 添加用户管理相关文件
添加用户管理视图、API和状态管理文件
2026-03-28 14:37:29 +08:00

350 lines
8.6 KiB
Markdown
Raw Permalink 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.
# 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/)