yshop 是基于当前流行技术组合的前后端分离 B2C(单商户)/ B2B2C(多商户)商城系统,采用 SpringBoot2 + MyBatis-Plus + SpringSecurity + JWT + Redis + Vue + UniApp 技术栈,包含商品、多规格、运费模板、素材库、拼团、快递、秒杀、优惠券、积分、分销、会员、充值等功能,适合企业或个人二次开发。
┌──────────────────────────────────────────────────────────────────┐
│ Docker Compose (中间件) │
│ │
│ ┌──────────────────┐ ┌──────────────────┐ │
│ │ MySQL 8 (预初始化)│ │ Redis 7 │ │
│ │ yshop_mall_boot │ │ │ │
│ │ :3306 │ │ :6379 │ │
│ └────────┬─────────┘ └────────┬─────────┘ │
│ │ │ │
│ │ 端口映射到宿主机 │ │
└───────────┼──────────────────────┼───────────────────────────────┘
│ │
▼ ▼
┌──────────────────────────────────────────────────────────────────┐
│ env 容器 (手动启动服务) │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────────┐ │
│ │ yshop-admin │ │ yshop-app │ │ Vue 前端 │ │
│ │ :8001 │ │ :8008 │ │ :8686 (dev) │ │
│ └──────────────┘ └──────────────┘ └──────────────────┘ │
│ │
│ Maven 腾讯云源 → .mvn/settings.xml │
│ npm 腾讯云源 → yshop-mall-vue/.npmrc │
│ 连接 localhost:3306 (MySQL) / localhost:6379 (Redis) │
└──────────────────────────────────────────────────────────────────┘
项目提供了 start-services.sh 一键启动脚本,自动完成中间件检查、后端启动、前端启动和服务验证,并输出每个环节的耗时统计。
# 1. 启动中间件(MySQL + Redis)
docker compose up -d
# 2. 构建 + 启动所有服务(首次使用或代码变更后)
bash start-services.sh build
# 3. 直接启动所有服务(已构建过,无需重新编译)
bash start-services.sh
# 4. 查看服务状态
bash start-services.sh status
# 5. 停止所有业务服务
bash start-services.sh stop
docker compose up -d
等待 MySQL 和 Redis 健康检查通过:
# 查看中间件状态,确认 mysql 和 redis 均为 healthy
docker compose ps
项目已配置腾讯云加速源(
.mvn/settings.xml+pom.xml),依赖下载会自动走腾讯云镜像。 Maven 本地仓库缓存于/root/.m2,首次构建约 72s,缓存后约 10s。
cd /workspace/yshop-mall-boot
# 构建项目(跳过测试,启用并行编译)
mvn clean package -DskipTests -s .mvn/settings.xml -T 1C
构建成功后会在以下路径生成 jar 包:
yshop-admin/target/yshop-admin-1.9.0.jaryshop-app/target/yshop-app-1.9.0.jarcd /workspace/yshop-mall-boot
# 创建文件上传目录
mkdir -p /home/yshop/file /home/yshop/avatar
# 启动管理后台 API(端口 8001)
java -Xms1g -Xmx1g -jar yshop-admin/target/yshop-admin-1.9.0.jar --spring.profiles.active=dev &
# 启动移动端 API(端口 8008)
java -Xms1g -Xmx1g -jar yshop-app/target/yshop-app-1.9.0.jar --spring.profiles.active=dev &
使用
devprofile,连接localhost的 MySQL 和 Redis(由 Docker Compose 端口映射提供)。 日志直接输出到终端,如需后台运行可自行追加nohup ... > xxx.out 2>&1 &。
等待服务就绪后,检查端口是否监听:
ss -tlnp | grep -E '8001|8008'
已配置
.npmrc使用腾讯云 npm 加速源,npm install自动走腾讯云镜像。
cd /workspace/yshop-mall-vue
npm install
npm run dev
| 服务 | 地址 |
|---|---|
| 管理后台前端 | http://localhost:8686 |
| 管理后台 API | http://localhost:8001 |
| 移动端 API | http://localhost:8008 |
| Swagger (Admin) | http://localhost:8001/swagger-ui.html |
| Swagger (App) | http://localhost:8008/swagger-ui.html |
初始化账号密码: admin / 123456
# 启动中间件
docker compose up -d
# 停止中间件
docker compose down
# 查看中间件状态
docker compose ps
# 查看中间件日志
docker compose logs -f mysql
docker compose logs -f redis
# 停止后端服务
pkill -f yshop-admin
pkill -f yshop-app
# 重新构建(代码变更后)
cd /workspace/yshop-mall-boot && mvn clean package -DskipTests -s .mvn/settings.xml -T 1C
以下路径建议声明为缓存,避免每次环境重建重复下载:
| 路径 | 大小 | 说明 |
|---|---|---|
/root/.m2 | ~169M | Maven 依赖缓存(首次构建 72s → 缓存后 10s) |
/root/.npm | ~220M | npm 下载缓存(加速 npm install) |
/workspace/yshop-mall-vue/node_modules | ~447M | 前端依赖(省去 npm install 约 30s) |
注:完整 JDK 8 已包含在 env 镜像中(
/usr/local/openjdk-8),无需额外缓存。
| 镜像 | 说明 |
|---|---|
docker.cnb.cool/xh-test/npc-showcase/show/mysql-yshop | MySQL 8.0(预初始化 yshop_mall_boot 数据库,含 83 张表) |
docker.cnb.cool/xh-test/npc-showcase/show/redis:7-alpine | Redis 7 |
docker.cnb.cool/xh-test/npc-showcase/show/env | 应用运行环境(JDK 8 + Maven 3.8.8 + Node.js 16.20.2) |
# 在项目根目录构建包含 JDK + Maven + Node.js 的环境镜像
docker build -f Dockerfile.env -t docker.cnb.cool/xh-test/npc-showcase/show/env:latest .
docker push docker.cnb.cool/xh-test/npc-showcase/show/env:latest
| 子工程 | 说明 |
|---|---|
yshop-mall-boot | Java 后端工程(Spring Boot 2.7 + MyBatis-Plus) |
yshop-mall-vue | 管理后台前端(Vue 2 + Element UI) |
yshop-mall-uniapp | 移动端(UniApp,支持小程序 / H5) |
本项目基于 yshop 意象商城 开源版本,感谢原作者的贡献。