feat: app功能基本实现
This commit is contained in:
@@ -1,127 +1,232 @@
|
||||
# Simple Template
|
||||
# Simple Todo
|
||||
|
||||
## Quick Start
|
||||
`simple-todo` 是一个前后端分离的待办/后台管理模板项目。后端基于 AgileBoot 的 Spring Boot 分层架构改造,前端包含 Web 管理端和 Taro 多端应用,根目录提供 Docker Compose 用于本地依赖启动和生产部署。
|
||||
|
||||
This project contains:
|
||||
## 项目架构
|
||||
|
||||
- `backend`: Spring Boot admin API.
|
||||
- `frontend/web`: Vite + Vue 3 admin frontend.
|
||||
- `frontend/app`: Taro + Vue 3 app frontend.
|
||||
### 原仓库地址
|
||||
|
||||
The local development flow starts MySQL and Redis with Docker, then runs the
|
||||
backend and web frontend locally.
|
||||
当前项目是在以下开源项目基础上改造:
|
||||
|
||||
### Requirements
|
||||
- 后端原仓库:<https://github.com/valarchie/AgileBoot-Back-End>
|
||||
- Web 前端原仓库:<https://github.com/valarchie/agileboot-front-end-pure>
|
||||
- Web UI 上游项目:<https://github.com/pure-admin/vue-pure-admin>
|
||||
|
||||
### 目录结构
|
||||
|
||||
```text
|
||||
simple-todo
|
||||
├── backend # Spring Boot 后端
|
||||
│ ├── agileboot-admin # 后台管理接口启动模块
|
||||
│ ├── agileboot-api # 开放接口模块
|
||||
│ ├── agileboot-common # 通用工具与基础能力
|
||||
│ ├── agileboot-domain # 业务领域模块
|
||||
│ ├── agileboot-infrastructure # 基础设施、配置、集成能力
|
||||
│ └── sql # 初始化 SQL
|
||||
├── frontend
|
||||
│ ├── web # Vite + Vue 3 Web 管理端
|
||||
│ └── app # Taro + Vue 3 多端应用
|
||||
├── docs # 项目开发约定
|
||||
├── docker-compose.yml # MySQL、Redis、后端、Web 编排
|
||||
└── .env.example # Docker Compose 环境变量示例
|
||||
```
|
||||
|
||||
## 基础环境
|
||||
|
||||
- JDK 8+
|
||||
- Docker Desktop or Docker Engine with Compose
|
||||
- Node.js
|
||||
- pnpm
|
||||
- Maven 3.8+,也可以直接使用 `backend/mvnw` 或 `backend/mvnw.cmd`
|
||||
- Node.js 22+,推荐配合 Corepack 使用 pnpm
|
||||
- pnpm,Dockerfile 中使用 `pnpm@11.1.3`
|
||||
- Docker Desktop 或 Docker Engine + Docker Compose
|
||||
|
||||
### Start Infrastructure
|
||||
## 开发启动步骤
|
||||
|
||||
The development backend is configured to use the same defaults as
|
||||
`backend/docker-compose.yml`:
|
||||
### 1. 准备环境变量
|
||||
|
||||
- MySQL: `localhost:3306`, user `root`, password `root123`
|
||||
- Redis: `localhost:6379`, password `redis123`
|
||||
- Database name: `agileboot_pure`
|
||||
|
||||
You can start MySQL and Redis manually:
|
||||
Docker Compose 在项目根目录执行时会自动读取 `.env`。可以从示例文件复制:
|
||||
|
||||
```bash
|
||||
cd backend
|
||||
docker compose up -d
|
||||
cp .env.example .env
|
||||
```
|
||||
|
||||
The compose configuration mounts `backend/sql/agileboot.sql` into the MySQL
|
||||
container as `/docker-entrypoint-initdb.d/01-agileboot.sql`.
|
||||
The official MySQL image only runs files in `/docker-entrypoint-initdb.d` when
|
||||
the database directory is empty, during the first initialization of the
|
||||
`mysql_data` volume.
|
||||
Windows PowerShell:
|
||||
|
||||
If MySQL has already been started before, the `mysql_data` volume already
|
||||
contains data and `docker compose up -d` will not import the SQL again. To
|
||||
reinitialize the local database, remove the volumes first:
|
||||
```powershell
|
||||
Copy-Item .env.example .env
|
||||
```
|
||||
|
||||
`.env.example` 默认把 MySQL 和 Redis 映射到宿主机 `3306`、`6379`,与后端 `application-dev.yml` 的本地开发配置保持一致。
|
||||
|
||||
### 2. 启动 MySQL 和 Redis
|
||||
|
||||
```bash
|
||||
docker compose up -d mysql redis
|
||||
```
|
||||
|
||||
首次启动 MySQL 容器时,Compose 会把 `backend/sql/agileboot.sql` 挂载到 `/docker-entrypoint-initdb.d/01-agileboot.sql`,由 MySQL 镜像自动初始化数据库。
|
||||
|
||||
如果数据库卷已经存在,初始化 SQL 不会重复执行。需要重建本地数据时可以执行:
|
||||
|
||||
```bash
|
||||
cd backend
|
||||
docker compose down -v
|
||||
docker compose up -d
|
||||
docker compose up -d mysql redis
|
||||
```
|
||||
|
||||
Warning: `docker compose down -v` deletes the local MySQL and Redis volumes,
|
||||
including existing database data and Redis data.
|
||||
`docker compose down -v` 会删除本地 MySQL 和 Redis 数据卷,请确认不需要保留本地数据后再执行。
|
||||
|
||||
If you do not want to delete the volumes, import the SQL manually:
|
||||
### 3. 启动后端
|
||||
|
||||
```bash
|
||||
Windows PowerShell:
|
||||
|
||||
```powershell
|
||||
cd backend
|
||||
docker exec -i mysql-server mysql -uroot -proot123 agileboot_pure < sql/agileboot.sql
|
||||
.\mvnw.cmd -pl agileboot-admin spring-boot:run
|
||||
```
|
||||
|
||||
### Install Frontend Dependencies
|
||||
|
||||
```bash
|
||||
cd frontend
|
||||
pnpm install
|
||||
```
|
||||
|
||||
### Start Backend and Web Frontend
|
||||
|
||||
Start the backend:
|
||||
macOS / Linux:
|
||||
|
||||
```bash
|
||||
cd backend
|
||||
./mvnw -pl agileboot-admin spring-boot:run
|
||||
```
|
||||
|
||||
Start the web frontend:
|
||||
后端默认地址:
|
||||
|
||||
```bash
|
||||
cd frontend
|
||||
pnpm dev:web
|
||||
```text
|
||||
http://localhost:8080
|
||||
```
|
||||
|
||||
- Backend: `http://localhost:8080`
|
||||
- Frontend: Vite output, usually `http://localhost:80/`
|
||||
接口文档地址:
|
||||
|
||||
The frontend development proxy maps `/dev-api` to `http://localhost:8080`.
|
||||
|
||||
Optional app commands:
|
||||
|
||||
```bash
|
||||
cd frontend
|
||||
pnpm dev:app:weapp
|
||||
pnpm dev:app:h5
|
||||
```text
|
||||
http://localhost:8080/swagger-ui/index.html
|
||||
http://localhost:8080/v3/api-docs
|
||||
```
|
||||
|
||||
## Git Hooks
|
||||
|
||||
This repository uses `.githooks` as the single Git hooks entrypoint.
|
||||
|
||||
```bash
|
||||
git config core.hooksPath .githooks
|
||||
```
|
||||
|
||||
The frontend workspace uses pnpm:
|
||||
### 4. 启动 Web 管理端
|
||||
|
||||
```bash
|
||||
cd frontend
|
||||
pnpm install
|
||||
pnpm dev:web
|
||||
pnpm build:web
|
||||
pnpm dev:app:weapp
|
||||
pnpm build:app:weapp
|
||||
pnpm lint
|
||||
pnpm typecheck
|
||||
```
|
||||
|
||||
## Frontend
|
||||
`frontend/web/.env.development` 默认配置:
|
||||
|
||||
`frontend` is a pnpm workspace:
|
||||
```env
|
||||
VITE_PORT=80
|
||||
VITE_APP_BASE_API=/dev-api
|
||||
```
|
||||
|
||||
- `web`: Vite + Vue 3 admin frontend.
|
||||
- `app`: Taro + Vue 3 app frontend.
|
||||
Web 开发服务默认地址:
|
||||
|
||||
Shared engineering configuration lives in `frontend` root. Subprojects should extend the shared TypeScript, ESLint, Stylelint, Prettier, commitlint, and lint-staged configuration instead of duplicating it.
|
||||
```text
|
||||
http://localhost:80
|
||||
```
|
||||
|
||||
如果 80 端口被占用,可以修改 `frontend/web/.env.development` 中的 `VITE_PORT`。
|
||||
|
||||
### 5. 启动 App 端,可选
|
||||
|
||||
```bash
|
||||
cd frontend
|
||||
pnpm dev:app:weapp
|
||||
```
|
||||
|
||||
H5 模式:
|
||||
|
||||
```bash
|
||||
cd frontend
|
||||
pnpm dev:app:h5
|
||||
```
|
||||
|
||||
## 部署步骤
|
||||
|
||||
生产部署推荐使用根目录的 Docker Compose。它会启动 MySQL、Redis、后端服务和 Web Nginx 服务。
|
||||
|
||||
### 1. 准备生产环境变量
|
||||
|
||||
```bash
|
||||
cp .env.example .env
|
||||
```
|
||||
|
||||
按实际环境修改 `.env`,至少建议调整:
|
||||
|
||||
```env
|
||||
MYSQL_ROOT_PASSWORD=请替换为强密码
|
||||
MYSQL_DATABASE=todo_agileboot_pure
|
||||
MYSQL_APP_USERNAME=todo_app
|
||||
MYSQL_APP_PASSWORD=请替换为强密码
|
||||
MYSQL_PORT=13306
|
||||
|
||||
REDIS_PASSWORD=请替换为强密码
|
||||
REDIS_PORT=16379
|
||||
|
||||
APP_PORT=8080
|
||||
WEB_PORT=8081
|
||||
JAVA_OPTS=-Xms256m -Xmx512m
|
||||
```
|
||||
|
||||
生产环境建议把 `MYSQL_PORT`、`REDIS_PORT` 改成非默认宿主机端口,例如上面的 `13306`、`16379`。这两个变量只影响宿主机暴露端口,不影响容器内部端口;后端容器仍通过 Compose 内部网络访问 MySQL `3306` 和 Redis `6379`。
|
||||
|
||||
如果数据库和 Redis 只给后端容器使用,建议进一步通过服务器防火墙限制这些端口的外部访问,或按实际部署需要移除 `docker-compose.yml` 中 MySQL/Redis 的 `ports` 暴露配置。
|
||||
|
||||
不要提交真实生产 `.env` 文件。
|
||||
|
||||
### 2. 构建并启动完整服务
|
||||
|
||||
```bash
|
||||
docker compose --profile prod up -d --build
|
||||
```
|
||||
|
||||
Compose 会执行以下构建:
|
||||
|
||||
- `backend/Dockerfile`:使用 Maven 构建 `agileboot-admin`,运行 Spring Boot Jar。
|
||||
- `frontend/web/Dockerfile`:构建 Web 静态文件,并用 Nginx 提供访问。
|
||||
|
||||
Web 容器中的 Nginx 会把 `/prod-api/` 代理到 Compose 内部的后端服务 `app:8080`。
|
||||
|
||||
### 3. 访问服务
|
||||
|
||||
默认访问地址:
|
||||
|
||||
```text
|
||||
Web:http://localhost:8081
|
||||
后端:http://localhost:8080
|
||||
```
|
||||
|
||||
如果修改了 `.env` 中的 `WEB_PORT` 或 `APP_PORT`,以实际端口为准。
|
||||
|
||||
### 4. 常用运维命令
|
||||
|
||||
查看服务状态:
|
||||
|
||||
```bash
|
||||
docker compose --profile prod ps
|
||||
```
|
||||
|
||||
查看后端日志:
|
||||
|
||||
```bash
|
||||
docker compose --profile prod logs -f app
|
||||
```
|
||||
|
||||
查看 Web 日志:
|
||||
|
||||
```bash
|
||||
docker compose --profile prod logs -f web
|
||||
```
|
||||
|
||||
停止服务:
|
||||
|
||||
```bash
|
||||
docker compose --profile prod down
|
||||
```
|
||||
|
||||
停止并删除数据卷:
|
||||
|
||||
```bash
|
||||
docker compose --profile prod down -v
|
||||
```
|
||||
|
||||
`down -v` 会删除数据库和 Redis 数据,生产环境谨慎使用。
|
||||
|
||||
Reference in New Issue
Block a user