Skip to content

部署总览

部署 sz-admin 前,建议先理解后端服务的 jar 运行模型。无论最终使用 sz-deploy-v3、Docker Compose、GitHub Actions CI/CD,还是自行接入企业运维平台,核心都离不开四件事:应用镜像或 jar、外置配置、资源数据目录和日志目录。

一、先理解运行模型

sz-service-admin 是 Spring Boot 服务。以 jar 方式运行时,推荐在 jar 同级目录准备:

text
deploy/
├── sz-service-admin.jar
├── config/
│   └── prod/
│       ├── knife4j.yml
│       ├── oss.yml
│       ├── mybatis-flex.yml
│       ├── mysql.yml 或 postgresql.yml
│       ├── page-helper.yml
│       ├── redis.yml
│       └── sa-token.yml
├── data/
└── logs/
目录或文件是否必需说明
sz-service-admin.jar必需后端服务运行产物,由 sz-boot-parent 构建生成。
config/{profile}必需外置配置目录,保存数据库、Redis、Sa-Token、OSS、MyBatis Flex 等配置。
data条件必需LOCAL 资源存储目录。使用本地资源时必须持久化;全部使用 MinIO/OSS 时可作为预留目录。
logs运行后生成应用日志目录,建议挂载到宿主机并纳入日志清理策略。

启动时通过 profile 和数据库类型选择配置:

shell
DB_TYPE=mysql java -jar sz-service-admin.jar --spring.profiles.active=prod
powershell
$env:DB_TYPE = "mysql"
java -jar .\sz-service-admin.jar --spring.profiles.active=prod

sz-service-websocket 也是独立 Spring Boot 服务,但只依赖 WebSocket 运行所需配置,重点是 Redis 与 Sa-Token。

二、Docker 对运行模型的封装

Docker Compose 不改变服务读取配置和写入资源的方式,只是把目录挂载到容器中:

yaml
volumes:
  - ./logs:/logs
  - ./config:/config
  - /home/data/sz-resource:/data

可以这样理解:

jar 部署目录Docker 容器目录说明
./config/{profile}/config/{profile}必须准备完整。缺少配置文件会导致服务启动失败。
./data/dataLOCAL 资源目录,必须持久化。
./logs/logs日志目录,建议挂载到宿主机。

因此,学习 jar 模型不是为了替代 Docker,而是为了理解 Docker 部署时哪些目录不能丢,哪些配置不能被镜像覆盖。

三、选择部署方式

部署方式推荐优先级适合场景阅读入口
Docker Compose 快速部署新环境推荐全新安装、快速体验、希望用脚本统一编排 Redis、数据库、MinIO、后端、WebSocket、前端和代理。Docker 快速部署
GitHub Actions CI/CD进阶自动化已完成服务器初始化,希望自动构建后端镜像、推送镜像并远程触发升级。GitHub Actions CI/CD
传统 jar 部署基础模型想理解服务运行机制,或已有 JDK、数据库、Redis、Nginx 等完整运维体系。本页运行模型
旧版 shell 脚本历史参考v2.0.0 后不再作为推荐主路径,仅参考构建、挂载和启动思路。传统部署

推荐路径:

text
先阅读部署总览

用 sz-deploy-v3 完成服务器初始化

按需接入 GitHub Actions CI/CD

四、部署前确认清单

分类需要确认
操作系统sz-deploy-v3 优先适配 RockyLinux 10,其他发行版需确认包管理器、防火墙、时区和系统服务差异。
数据库使用 MySQL 还是 PostgreSQL;后端镜像 tag、DB_TYPEPAGE_HELPER_DIALECT 和连接配置必须一致。
Redis登录态、缓存和 WebSocket Pub/Sub 是否使用同一 Redis;连接配置是否在服务目录中同步。
资源存储LOCAL 资源目录 RESOURCE_DATA_DIR 是否持久化;MinIO/OSS 地址和访问方式是否对外可达。
配置文件config/{profile} 是否完整,敏感配置是否只保存在服务器侧。
端口9991999398008081443、数据库和 Redis 端口是否冲突。
镜像仓库官方镜像还是自有镜像;服务器 .env 中的 registry、namespace、tag 是否与 CI/CD 输出一致。
升级策略普通 upgrade.sh 是否允许短暂停机;生产是否需要启用蓝绿部署。
备份回滚数据库、配置目录、资源目录、镜像版本和旧容器是否有可验证的恢复方案。

五、数据库与镜像标签

sz-service-admin 会按数据库类型构建不同镜像:

数据库常用镜像 tag说明
MySQLlatest / test-mysqlMySQL 是默认部署路径,历史上 latest 兼容 MySQL。
PostgreSQLlatest-postgresql / test-postgresqlPostgreSQL 需要使用 PostgreSQL profile 构建出的镜像。

如果服务器 .env 中设置:

properties
DB_TYPE=postgresql

则必须确保对应镜像 tag 是 PostgreSQL 版本,并且 config/{profile}/postgresql.yml、PostgreSQL 用户、密码和网络访问都已准备好。

六、普通部署与蓝绿部署

sz-deploy-v3 支持两种后端升级方式。

模式配置特点
普通模式USE_BLUE_GREEN_DEPLOY=false单实例,执行 upgrade.sh 拉取镜像并重启容器,适合测试或允许短暂停机的场景。
蓝绿模式USE_BLUE_GREEN_DEPLOY=true维护 blue/green 两个槽位,通过健康检查和 Nginx upstream 切换流量,适合生产升级。

蓝绿模式依赖 sz-service-admin 的 Actuator 健康检查接口:

text
/api/actuator/health

如果健康检查失败,蓝绿部署会保留旧实例并回滚新槽位。常见失败原因是配置文件缺失、数据库连接失败、Liquibase 执行失败、Redis 不可达或 Actuator 未开放。

七、CI/CD 与服务器部署的关系

GitHub Actions 不直接管理生产配置,它只做三件事:

  1. 构建 sz-service-adminsz-service-websocket 镜像。
  2. 推送镜像到镜像仓库。
  3. SSH 到服务器执行 sz-deploy-v3 已生成的 upgrade.shdeploy.sh

所以接入 CI/CD 前,服务器必须先完成 sz-deploy-v3 初始化,并确保 /home/docker-compose 下的服务目录可用。

八、下一步