2026-05-27 15:29:41 +08:00
2026-05-07 18:39:00 +08:00
2026-05-15 09:19:09 +08:00
2026-05-27 15:29:41 +08:00
2026-05-26 11:54:24 +08:00
2026-05-26 11:54:24 +08:00
2026-05-15 09:19:09 +08:00
2026-05-26 11:54:24 +08:00
2026-05-26 11:54:24 +08:00

Simple Todo

simple-todo 是一个前后端分离的待办/后台管理模板项目。后端基于 AgileBoot 的 Spring Boot 分层架构改造,前端包含 Web 管理端和 Taro 多端应用,根目录提供 Docker Compose 用于本地依赖启动和生产部署。

项目架构

原仓库地址

当前项目是在以下开源项目基础上改造:

目录结构

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+
  • Maven 3.8+,也可以直接使用 backend/mvnwbackend/mvnw.cmd
  • Node.js 22+,推荐配合 Corepack 使用 pnpm
  • pnpmDockerfile 中使用 pnpm@11.1.3
  • Docker Desktop 或 Docker Engine + Docker Compose

开发启动步骤

1. 准备环境变量

Docker Compose 在项目根目录执行时会自动读取 .env。可以从示例文件复制:

cp .env.example .env

Windows PowerShell

Copy-Item .env.example .env

.env.example 默认把 MySQL 和 Redis 映射到宿主机 33066379,与后端 application-dev.yml 的本地开发配置保持一致。

2. 启动 MySQL 和 Redis

docker compose up -d mysql redis

首次启动 MySQL 容器时,Compose 会把 backend/sql/agileboot.sql 挂载到 /docker-entrypoint-initdb.d/01-agileboot.sql,由 MySQL 镜像自动初始化数据库。

如果数据库卷已经存在,初始化 SQL 不会重复执行。需要重建本地数据时可以执行:

docker compose down -v
docker compose up -d mysql redis

docker compose down -v 会删除本地 MySQL 和 Redis 数据卷,请确认不需要保留本地数据后再执行。

3. 启动后端

Windows PowerShell

cd backend
.\mvnw.cmd -pl agileboot-admin spring-boot:run

macOS / Linux

cd backend
./mvnw -pl agileboot-admin spring-boot:run

后端默认地址:

http://localhost:8080

接口文档地址:

http://localhost:8080/swagger-ui/index.html
http://localhost:8080/v3/api-docs

4. 启动 Web 管理端

cd frontend
pnpm install
pnpm dev:web

frontend/web/.env.development 默认配置:

VITE_PORT=80
VITE_APP_BASE_API=/dev-api

Web 开发服务默认地址:

http://localhost:80

如果 80 端口被占用,可以修改 frontend/web/.env.development 中的 VITE_PORT

5. 启动 App 端,可选

cd frontend
pnpm dev:app:weapp

H5 模式:

cd frontend
pnpm dev:app:h5

部署步骤

生产部署推荐使用根目录的 Docker Compose。它会启动 MySQL、Redis、后端服务和 Web Nginx 服务。

1. 准备生产环境变量

cp .env.example .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_PORTREDIS_PORT 改成非默认宿主机端口,例如上面的 1330616379。这两个变量只影响宿主机暴露端口,不影响容器内部端口;后端容器仍通过 Compose 内部网络访问 MySQL 3306 和 Redis 6379

如果数据库和 Redis 只给后端容器使用,建议进一步通过服务器防火墙限制这些端口的外部访问,或按实际部署需要移除 docker-compose.yml 中 MySQL/Redis 的 ports 暴露配置。

不要提交真实生产 .env 文件。

2. 构建并启动完整服务

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. 访问服务

默认访问地址:

Webhttp://localhost:8081
后端:http://localhost:8080

如果修改了 .env 中的 WEB_PORTAPP_PORT,以实际端口为准。

4. 常用运维命令

查看服务状态:

docker compose --profile prod ps

查看后端日志:

docker compose --profile prod logs -f app

查看 Web 日志:

docker compose --profile prod logs -f web

停止服务:

docker compose --profile prod down

停止并删除数据卷:

docker compose --profile prod down -v

down -v 会删除数据库和 Redis 数据,生产环境谨慎使用。

S
Description
collaboration todo system
Readme 6.1 MiB
Languages
Java 49.9%
TypeScript 25.8%
Vue 21%
SCSS 2.3%
CSS 0.3%
Other 0.7%