快速开始

从环境准备到应用运行的完整流程

快速开始

Mortise 是一款现代化、模块化的企业级全栈业务开发平台,基于 Spring Boot 3.5.7 + MyBatis-Flex 1.11.0 + JDK 21 构建,涵盖认证授权、电商交易、聚合支付、社区运营等核心业务域,前后端全栈,开箱即用。

环境要求

工具版本要求推荐版本
JDK21+Eclipse Temurin 21
Maven3.9+3.9.x
Docker20.10+用于启动依赖服务
Docker Compose2.0+-
Node.js20+22.x LTS
pnpm10+10.29.x
PostgreSQL12+(提供 Docker)PostgreSQL 17
Redis6.0+(提供 Docker)7.x

第一步:克隆项目

git clone https://github.com/rymcu/mortise.git
cd mortise

如需拉取商业子模块(需权限):

git clone --recurse-submodules git@github.com:rymcu/mortise.git

第二步:启动依赖服务

根目录的 compose.yaml 启动基础设施依赖(PostgreSQL、Redis、Logto、Nginx),不含 Spring Boot 应用本身:

# 启动依赖(首次会下载镜像,需几分钟)
docker compose up -d

# 检查服务状态
docker compose ps

服务地址:

服务地址说明
PostgreSQLlocalhost:5432主数据库
Redislocalhost:6379缓存服务
Logto (OIDC)http://localhost:3001OAuth2 身份证书服务
Nginxhttp://localhost:80反向代理

第三步:设置加密密钥

项目使用 Jasypt 加密配置文件中的数据库密码、Redis 密码等敏感信息。启动前必须设置 ENCRYPTION_KEY 环境变量,否则应用启动即报错。

# Linux / macOS
export ENCRYPTION_KEY=your_secret_key

# PowerShell
$env:ENCRYPTION_KEY = "your_secret_key"

⚠️ 未设置此变量将导致 ENC(...) 加密配置无法解密,常见错误表现:dataSource requiredpassword authentication failed 等。

第四步:启动应用

# Maven 插件(开发推荐)
cd mortise-app
mvn spring-boot:run

验证启动:

curl http://localhost:9999/mortise/actuator/health
# 返回 {"status":"UP"} 表示启动成功

第五步:启动前端

cd frontend
pnpm install

# 管理端(localhost:3000/admin/)
pnpm dev:admin

# 用户端(localhost:3001/)
pnpm dev:web

# 官网(localhost:3002/)
pnpm dev:site

访问地址

常见问题

Q: 启动报 dataSource required / 数据库密码为空

配置文件包含 ENC(...) 加密値,但 ENCRYPTION_KEY 环境变量未设置或不正确,导致 Jasypt 无法解密。先确认当前 Shell 中变量是否已生效:

echo $ENCRYPTION_KEY          # Linux/macOS
echo $env:ENCRYPTION_KEY      # PowerShell

Q: 切换分支后子模块目录为空

git submodule update --init --recursive

Q: Docker 启动慢或镜像下载失败

配置国内 Docker 镜像加速器,或者耐心等待首次镇像下载完成。