4.5 KiB
4.5 KiB
中州养老部署指南
1. 部署架构
本项目按前后端分离部署:
- 前端:
zzyl-ui,Vue 2 项目,使用pnpm构建,打包为 Nginx 镜像。 - 后端:
zzyl-admin,Spring Boot 服务,JDK 11,容器内端口9000。 - 中间件:MySQL 8、Redis 7。
- CI:GitHub Actions 构建并推送
zzyl-admin、zzyl-ui两个镜像。 - CD:服务器上手动执行 Docker Compose,所有运行时变量统一写在
deploy/compose/.env。
生产入口为前端服务:http://服务器IP或域名:${UI_PORT}/。前端 /prod-api/ 会由 Nginx 转发到后端 zzyl-admin:9000。
2. 需要准备的材料
- Linux 服务器,建议 2 核 4G 以上,已安装 Docker Engine、Docker Compose Plugin、Git、curl。
- 阿里云 ACR 或其他 Docker Registry,用于保存后端和前端镜像。
- GitHub Secrets:
ACR_REGISTRY、ACR_USERNAME、ACR_PASSWORD、IMAGE_NAMESPACE。 - 域名和 DNS 解析;如对外提供 HTTPS,还需要证书或上层反向代理网关。
- 数据库初始化脚本:
sql/dev0302.sql、sql/quartz.sql。 - 阿里云 OSS:Bucket、Endpoint、Region、AccessKeyId、AccessKeySecret。
- 微信小程序:
appId、secret,并把生产域名加入小程序后台白名单。 - 华为云 IoTDA/AMQP:AK、SK、ProjectId、Endpoint、RegionId、AMQP Host、AccessKey、AccessCode、QueueName。
- 百度千帆:AccessKey、SecretKey、模型名。
3. CI 构建流程
工作流文件:.github/workflows/build-and-push.yml。
触发方式:
- 推送到
main或master。 - 推送
v*Tag。 - 在 GitHub Actions 手动执行
workflow_dispatch。
CI 会执行:
- 使用 JDK 11 执行
mvn -B clean package -DskipTests。 - 基于
zzyl-admin/Dockerfile构建并推送zzyl-admin:${tag}。 - 基于
zzyl-ui/Dockerfile使用pnpm install --frozen-lockfile && pnpm build:prod构建并推送zzyl-ui:${tag}。 - 分支构建会额外推送
latest标签。
镜像地址示例:
registry.cn-hangzhou.aliyuncs.com/your-namespace/zzyl-admin:latest
registry.cn-hangzhou.aliyuncs.com/your-namespace/zzyl-ui:latest
4. 服务器目录与环境变量
推荐目录:
mkdir -p /opt/zzyl/compose /opt/zzyl/sql
mkdir -p /data/zzyl/{logs,uploadPath}
复制文件到服务器:
deploy/compose/docker-compose.full.yml到/opt/zzyl/compose/docker-compose.ymldeploy/compose/.env.example到/opt/zzyl/compose/.envsql/dev0302.sql和sql/quartz.sql到/opt/zzyl/sql
编辑 /opt/zzyl/compose/.env,至少修改:
ZZYL_ADMIN_IMAGE、ZZYL_UI_IMAGEUI_PORT,如果宿主机 Nginx 也监听 80,建议改为8080MYSQL_ROOT_PASSWORD、MYSQL_APP_PASSWORD、MYSQL_PASSWORDREDIS_PASSWORDTOKEN_SECRET、DRUID_LOGIN_PASSWORD- OSS、微信、华为云、百度千帆相关变量
注意:MYSQL_APP_USER/MYSQL_APP_PASSWORD 必须与 MYSQL_USERNAME/MYSQL_PASSWORD 保持一致。
5. 首次部署
进入部署目录:
cd /opt/zzyl/compose
docker compose --env-file .env up -d mysql redis
初始化数据库:
set -a
. ./.env
set +a
docker exec -i zzyl-mysql mysql -uroot -p"${MYSQL_ROOT_PASSWORD}" < /opt/zzyl/sql/dev0302.sql
docker exec -i zzyl-mysql mysql -uroot -p"${MYSQL_ROOT_PASSWORD}" zzyl < /opt/zzyl/sql/quartz.sql
启动完整系统:
docker compose --env-file .env pull
docker compose --env-file .env up -d
docker compose --env-file .env ps
6. 进入系统
浏览器访问:
http://服务器IP或域名/
如果 UI_PORT 不是 80,访问:
http://服务器IP或域名:${UI_PORT}/
默认后台账号:
- 用户名:
admin - 密码:
admin123
首次登录后请立即修改管理员密码,并检查系统管理、养老业务菜单是否正常显示。
7. 升级与验证
升级:
cd /opt/zzyl/compose
docker compose --env-file .env pull
docker compose --env-file .env up -d
docker image prune -f
验证:
docker compose --env-file .env ps
docker logs zzyl-admin --tail 200
docker logs zzyl-ui --tail 100
curl -I http://127.0.0.1:${UI_PORT}/
常见问题:
- 前端打不开:检查
zzyl-ui容器、UI_PORT、安全组和防火墙。 - 登录验证码失败:检查
/prod-api/captchaImage是否被 Nginx 转发到后端。 - 后端启动失败:优先查看 MySQL、Redis、华为云 IoTDA/AMQP、OSS、百度千帆变量。
- 上传失败:检查 OSS 配置和
RUOYI_PROFILE=/data/zzyl/uploadPath。