chore(docs): 添加项目完整文档与快速启动指南

- 新增详细的 Fengling 项目文档,涵盖项目结构、技术栈、环境准备
- 包含后端与前端开发指南与规范说明
- 提供丰富的第三方组件安装及 Docker 容器部署示例
- 描述本地开发流程、测试策略及调试技巧
- 详细介绍生产环境部署、CI/CD 集成及云平台部署方案
- 增加监控、性能优化及故障排查的最佳实践
- 新建管理后台前端 Dockerfile 和对应 nginx 配置文件
- 新增项目快速启动的 README 指南,方便开发者快速上手
This commit is contained in:
sam 2026-02-13 19:13:23 +08:00
parent d88ec60ef4
commit 62f050a4f1
6 changed files with 1817 additions and 0 deletions

View File

@ -0,0 +1,33 @@
# Frontend/Fengling.Backend.Admin/Dockerfile
FROM node:18-alpine AS build
# 设置工作目录
WORKDIR /app
# 复制 package 文件
COPY package.json pnpm-lock.yaml ./
# 安装 pnpm 和依赖
RUN npm install -g pnpm
RUN pnpm install --frozen-lockfile
# 复制源代码
COPY . .
# 构建应用
RUN pnpm build
# 生产阶段
FROM nginx:alpine AS runtime
# 复制构建产物
COPY --from=build /app/dist /usr/share/nginx/html
# 复制 nginx 配置
COPY nginx.conf /etc/nginx/nginx.conf
# 暴露端口
EXPOSE 80
# 启动 nginx
CMD ["nginx", "-g", "daemon off;"]

View File

@ -0,0 +1,62 @@
# nginx.conf for Vue applications
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
# 日志格式
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
error_log /var/log/nginx/error.log;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# Gzip 压缩
gzip on;
gzip_vary on;
gzip_min_length 1024;
gzip_types text/plain text/css text/xml text/javascript application/javascript application/xml+rss application/json;
server {
listen 80;
server_name localhost;
# 根路径
location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html; # 支持 Vue Router history 模式
}
# 静态资源缓存
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
# API 代理 (开发时可能需要)
location /api/ {
proxy_pass http://backend:80;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# 错误页面
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
}

1418
PROJECT_DOCUMENTATION.md Normal file

File diff suppressed because it is too large Load Diff

178
README.md Normal file
View File

@ -0,0 +1,178 @@
# Fengling 项目快速开始指南
## 🚀 5分钟快速启动
### 1. 环境检查
确保已安装以下软件:
- [.NET 10 SDK](https://dotnet.microsoft.com/download/dotnet/10.0)
- [Node.js 18+](https://nodejs.org/)
- [Docker Desktop](https://www.docker.com/products/docker-desktop/)
- [Git](https://git-scm.com/)
验证安装:
```bash
dotnet --version # 应显示 10.0.xxx
node --version # 应显示 18.x 或 20.x
docker --version # 应显示 Docker 版本
```
### 2. 获取代码
```bash
git clone <your-repo-url>
cd Demo
```
### 3. 启动基础设施
```bash
# 启动 Redis 和其他依赖服务
cd Backend/scripts
docker-compose up -d
```
### 4. 启动后端服务
```bash
# 新终端窗口
cd Backend/src/Fengling.Backend.Web
dotnet run
```
后端将在 `http://localhost:5511` 启动
### 5. 启动前端
```bash
# 管理后台 - 新终端窗口
cd Frontend/Fengling.Backend.Admin
pnpm install
pnpm dev
# H5会员端 - 新终端窗口
cd Frontend/Fengling.H5
pnpm install
pnpm dev
```
### 6. 访问应用
- **管理后台**: http://localhost:3000
- **H5会员端**: http://localhost:3001
- **API 文档**: http://localhost:5511/swagger
---
## 📁 项目结构速览
```
Demo/
├── Backend/ # 后端服务 (.NET 10)
│ ├── src/ # 源代码
│ ├── test/ # 测试代码
│ └── scripts/ # 基础设施脚本
├── Frontend/
│ ├── Fengling.Backend.Admin/ # 管理后台 (Vue 3)
│ └── Fengling.H5/ # H5会员端 (Vue 3)
├── docs/ # 详细文档
└── PROJECT_DOCUMENTATION.md # 完整文档
```
---
## 🔧 常用命令
### 后端开发
```bash
# 还原依赖
dotnet restore
# 构建项目
dotnet build
# 运行开发模式
dotnet watch run
# 运行测试
dotnet test
# 数据库迁移
dotnet ef database update
```
### 前端开发
```bash
# 安装依赖
pnpm install
# 启动开发服务器
pnpm dev
# 构建生产版本
pnpm build
# 代码检查
pnpm lint
```
### 基础设施管理
```bash
# 启动所有服务
docker-compose up -d
# 查看服务状态
docker-compose ps
# 停止服务
docker-compose down
# 完全清理
docker-compose down -v
```
---
## 🎯 开发约定
### 后端
- 使用 Clean Architecture 分层架构
- 遵循 DDD 领域驱动设计原则
- API 使用 FastEndpoints 框架
- 数据验证使用 FluentValidation
- 使用 MediatR 处理命令查询
### 前端
- 使用 Composition API 风格
- TypeScript 严格模式
- Tailwind CSS 样式系统
- Pinia 状态管理
- Vue Router 路由管理
---
## 📚 学习资源
详细文档请查看: [PROJECT_DOCUMENTATION.md](PROJECT_DOCUMENTATION.md)
主要技术栈文档:
- [.NET 10 官方文档](https://learn.microsoft.com/zh-cn/dotnet/)
- [Vue 3 官方文档](https://vuejs.org/)
- [Tailwind CSS](https://tailwindcss.com/)
---
## ❓ 常见问题
**Q: 后端启动失败,提示数据库连接错误?**
A: 确保 Docker 服务已启动:`docker-compose up -d`
**Q: 前端页面空白?**
A: 检查控制台是否有错误,确认后端 API 是否正常运行
**Q: 需要帮助?**
A: 查看完整文档或联系项目维护者
---
*Happy Coding! 🎉*

66
deploy.ps1 Normal file
View File

@ -0,0 +1,66 @@
# deploy.ps1 - Windows 部署脚本
param(
[string]$Version = "latest",
[string]$Registry = "your-registry.com",
[string]$Namespace = "your-namespace"
)
$ErrorActionPreference = "Stop"
$ProjectName = "fengling"
Write-Host "🚀 开始部署 $ProjectName 版本 $Version" -ForegroundColor Green
try {
# 1. 构建后端镜像
Write-Host "📦 构建后端镜像..." -ForegroundColor Yellow
Set-Location Backend
docker build -t "$Registry/$Namespace/fengling-backend:$Version" -f src/Fengling.Backend.Web/Dockerfile .
docker push "$Registry/$Namespace/fengling-backend:$Version"
Set-Location ..
# 2. 构建前端镜像
Write-Host "🎨 构建前端镜像..." -ForegroundColor Yellow
# 管理后台
Set-Location Frontend/Fengling.Backend.Admin
docker build -t "$Registry/$Namespace/fengling-admin:$Version" .
docker push "$Registry/$Namespace/fengling-admin:$Version"
Set-Location ../..
# H5会员端
Set-Location Frontend/Fengling.H5
docker build -t "$Registry/$Namespace/fengling-h5:$Version" .
docker push "$Registry/$Namespace/fengling-h5:$Version"
Set-Location ../..
# 3. 部署到 Kubernetes (如果使用)
if (Test-Path "k8s") {
Write-Host "☸️ 部署到 Kubernetes..." -ForegroundColor Yellow
kubectl set image deployment/fengling-backend fengling-backend="$Registry/$Namespace/fengling-backend:$Version"
kubectl set image deployment/fengling-admin fengling-admin="$Registry/$Namespace/fengling-admin:$Version"
kubectl set image deployment/fengling-h5 fengling-h5="$Registry/$Namespace/fengling-h5:$Version"
# 等待部署完成
kubectl rollout status deployment/fengling-backend
kubectl rollout status deployment/fengling-admin
kubectl rollout status deployment/fengling-h5
}
# 4. 部署到 Docker Compose (如果使用)
if (Test-Path "docker-compose.prod.yml") {
Write-Host "🐳 部署到 Docker Compose..." -ForegroundColor Yellow
docker-compose -f docker-compose.prod.yml pull
docker-compose -f docker-compose.prod.yml up -d
}
Write-Host "✅ 部署完成!" -ForegroundColor Green
Write-Host "应用查看地址:" -ForegroundColor Cyan
Write-Host "- 管理后台: http://your-admin-domain.com" -ForegroundColor White
Write-Host "- H5会员端: http://your-h5-domain.com" -ForegroundColor White
Write-Host "- API 文档: http://your-api-domain.com/swagger" -ForegroundColor White
} catch {
Write-Host "❌ 部署失败: $($_.Exception.Message)" -ForegroundColor Red
exit 1
}

60
deploy.sh Normal file
View File

@ -0,0 +1,60 @@
#!/bin/bash
# deploy.sh - 自动化部署脚本
set -e # 遇到错误立即退出
# 配置变量
PROJECT_NAME="fengling"
VERSION=${1:-"latest"}
REGISTRY="your-registry.com"
NAMESPACE="your-namespace"
echo "🚀 开始部署 $PROJECT_NAME 版本 $VERSION"
# 1. 构建后端镜像
echo "📦 构建后端镜像..."
cd Backend
docker build -t $REGISTRY/$NAMESPACE/fengling-backend:$VERSION -f src/Fengling.Backend.Web/Dockerfile .
docker push $REGISTRY/$NAMESPACE/fengling-backend:$VERSION
cd ..
# 2. 构建前端镜像
echo "🎨 构建前端镜像..."
# 管理后台
cd Frontend/Fengling.Backend.Admin
docker build -t $REGISTRY/$NAMESPACE/fengling-admin:$VERSION .
docker push $REGISTRY/$NAMESPACE/fengling-admin:$VERSION
cd ../..
# H5会员端
cd Frontend/Fengling.H5
docker build -t $REGISTRY/$NAMESPACE/fengling-h5:$VERSION .
docker push $REGISTRY/$NAMESPACE/fengling-h5:$VERSION
cd ../..
# 3. 部署到 Kubernetes (如果使用)
if [ -d "k8s" ]; then
echo "☸️ 部署到 Kubernetes..."
kubectl set image deployment/fengling-backend fengling-backend=$REGISTRY/$NAMESPACE/fengling-backend:$VERSION
kubectl set image deployment/fengling-admin fengling-admin=$REGISTRY/$NAMESPACE/fengling-admin:$VERSION
kubectl set image deployment/fengling-h5 fengling-h5=$REGISTRY/$NAMESPACE/fengling-h5:$VERSION
# 等待部署完成
kubectl rollout status deployment/fengling-backend
kubectl rollout status deployment/fengling-admin
kubectl rollout status deployment/fengling-h5
fi
# 4. 部署到 Docker Compose (如果使用)
if [ -f "docker-compose.prod.yml" ]; then
echo "🐳 部署到 Docker Compose..."
docker-compose -f docker-compose.prod.yml pull
docker-compose -f docker-compose.prod.yml up -d
fi
echo "✅ 部署完成!"
echo "应用查看地址:"
echo "- 管理后台: http://your-admin-domain.com"
echo "- H5会员端: http://your-h5-domain.com"
echo "- API 文档: http://your-api-domain.com/swagger"