Appearance
第 1 章 · 部署细节与多账号测试
总览 §2 已经够跑通一次。本章补的是:改端口、换数据库、数据重置、看日志,以及一个人怎么测多角色审批。
1. 一键包里有什么
四个容器,端口固定:
| 容器 | 镜像 | 端口 |
|---|---|---|
boot4j-nginx | mldong/nginx:antd-vben5-pro-backend | 21080 → 80 |
boot4j-api | mldong/api:mldong-boot4-jeeflow | 24000 → 8080 |
boot4j-mysql | mldong/mysql:mldong-plus-jeeflow | 24306 → 3306 |
boot4j-redis | mldong/redis:5.0.4 | 27379 → 6379 |
deploy.sh 会把 docker-compose.yml 下到当前目录的 mldong-boot4-jeeflow/ 子目录,改配置就改那份文件。
2. 常用改法
2.1 换端口
编辑 docker-compose.yml 里对应服务的 ports,左边是宿主机端口:
yaml
frontend:
ports:
- "21080:80" # 改成 "8080:80" 就用 http://localhost:8080 访问
backend:
ports:
- "24000:8080"改了前端端口不用动前端配置:后台 API 地址走 nginx 反代,只改上面这两处即可。
2.2 用自己的 MySQL / Redis
后端读环境变量,不用改镜像:
yaml
backend:
environment:
DB_HOST: 192.168.1.50
DB_PORT: "3306"
DB_NAME: mldong-plus
DB_USER: root
DB_PASSWORD: "你的密码"
SPRING_DATASOURCE_URL: "jdbc:mysql://192.168.1.50:3306/mldong-plus?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true"
SPRING_DATASOURCE_USERNAME: root
SPRING_DATASOURCE_PASSWORD: "你的密码"
REDIS_HOST: 192.168.1.50
REDIS_PORT: "6379"
REDIS_PASSWORD: ""SPRING_DATASOURCE_URL 必须一起设。 只设 DB_HOST 时,框架启动早期的一段初始化仍会去连镜像里写死的默认地址,表现为容器反复重启。
外部库需要先有表结构和数据:从容器里导出来一份最快
bash
docker exec boot4j-mysql mysqldump -uroot -p'G86u@45Ayi34P' mldong-plus > mldong-plus.sql2.3 指定后端镜像版本
compose 里后端镜像写的是 ${BACKEND_IMAGE:-...api:mldong-boot4-jeeflow},临时换 tag 不用改文件:
bash
BACKEND_IMAGE=registry.cn-zhangjiakou.aliyuncs.com/mldong/api:mldong-boot4-jeeflow docker compose -p boot4j up -d backend3. 数据、日志与重置
bash
# 看状态
docker compose -p boot4j ps
# 看后端日志(启动失败、SQL 报错都在这里)
docker logs -f boot4j-api
# 进库
docker exec -it boot4j-mysql mysql -uroot -p'G86u@45Ayi34P' mldong-plus
# 只重启后端
docker restart boot4j-api
# 全部停掉(保留数据)
docker compose -p boot4j down
# 连数据一起清,下次是全新演示数据
docker compose -p boot4j down -v演示数据烤在 MySQL 镜像里,卷删掉就回到净装状态。改过部门、用户、流程后又想要干净环境,down -v 是最省事的一条路。
4. 一个人怎么测多角色审批
一条审批流至少两个角色,浏览器要能来回切:
| 方式 | 怎么做 | 适合 |
|---|---|---|
| 退出重登 | 右上角头像 → 退出登录 → 换账号 | 只看单向流转,最稳 |
| 两个浏览器 | Chrome 走发起人,Edge 走审批人 | 想看两边同时刷新 |
| 无痕窗口 | 普通窗口一个账号,无痕窗口一个账号 | 临时加第三个角色 |
别用同一个浏览器的多个标签页:登录态存在同一个 localStorage 里,两个标签页会互相顶掉,表现为"我刚才的待办怎么没了"。
测试时建议的账号分工(见 总览 §3.2):wuhao 发起 → lina 部门经理 → u0011 分管领导,superAdmin 只做设计和部署。
5. 权限码
后台所有工作流接口都走 wf:{action} 形式的权限码,例如 wf:processDesign:deploy、wf:processTask:execute。
superAdmin全部放行,手册截图一律用它。- 普通账号提示"您没有资源wf:xxx访问权限"时,去 系统设置 → 角色管理,选中角色 → 授权菜单,把对应功能与按钮勾上。
- 前端菜单来自后端下发的菜单数据,改完权限要重新登录才生效。
6. 卡住了看这里
| 现象 | 原因 | 处理 |
|---|---|---|
boot4j-api 一直重启 | 连不上数据库 | 按 §2.2 同时设 DB_HOST 与 SPRING_DATASOURCE_URL;docker logs boot4j-api 看具体报错 |
| 端口冲突起不来 | 21080/24000 已被别的栈占用 | 按 §2.1 换端口,或先 docker compose -p <别的项目名> down |
| MySQL 首次启动很慢 | 镜像首启要初始化数据目录 | 正常约 15~25 秒;超过 2 分钟看 docker logs boot4j-mysql |
| 前端能开但所有请求报错 | 后端还没就绪 | 用 总览 §2.2 的登录探测确认 |
| 昨天配的流程今天没了 | 执行过 down -v | 卷删除会回到净装数据,需要重新配置 |