Files
zhongzhou-elderly-care/doc/部署指南.md
2026-04-26 08:09:15 +08:00

151 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 中州养老部署指南
## 1. 部署架构
本项目按前后端分离部署:
- 前端:`zzyl-ui`Vue 2 项目,使用 `pnpm` 构建,打包为 Nginx 镜像。
- 后端:`zzyl-admin`Spring Boot 服务JDK 11容器内端口 `9000`
- 中间件MySQL 8、Redis 7。
- CIGitHub 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`
- 阿里云 OSSBucket、Endpoint、Region、AccessKeyId、AccessKeySecret。
- 微信小程序:`appId``secret`,并把生产域名加入小程序后台白名单。
- 华为云 IoTDA/AMQPAK、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 会执行:
1. 使用 JDK 11 执行 `mvn -B clean package -DskipTests`
2. 基于 `zzyl-admin/Dockerfile` 构建并推送 `zzyl-admin:${tag}`
3. 基于 `zzyl-ui/Dockerfile` 使用 `pnpm install --frozen-lockfile && pnpm build:prod` 构建并推送 `zzyl-ui:${tag}`
4. 分支构建会额外推送 `latest` 标签。
镜像地址示例:
```text
registry.cn-hangzhou.aliyuncs.com/your-namespace/zzyl-admin:latest
registry.cn-hangzhou.aliyuncs.com/your-namespace/zzyl-ui:latest
```
## 4. 服务器目录与环境变量
推荐目录:
```bash
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.yml`
- `deploy/compose/.env.example``/opt/zzyl/compose/.env`
- `sql/dev0302.sql``sql/quartz.sql``/opt/zzyl/sql`
编辑 `/opt/zzyl/compose/.env`,至少修改:
- `ZZYL_ADMIN_IMAGE``ZZYL_UI_IMAGE`
- `UI_PORT`,如果宿主机 Nginx 也监听 80建议改为 `8080`
- `MYSQL_ROOT_PASSWORD``MYSQL_APP_PASSWORD``MYSQL_PASSWORD`
- `REDIS_PASSWORD`
- `TOKEN_SECRET``DRUID_LOGIN_PASSWORD`
- OSS、微信、华为云、百度千帆相关变量
注意:`MYSQL_APP_USER/MYSQL_APP_PASSWORD` 必须与 `MYSQL_USERNAME/MYSQL_PASSWORD` 保持一致。
## 5. 首次部署
进入部署目录:
```bash
cd /opt/zzyl/compose
docker compose --env-file .env up -d mysql redis
```
初始化数据库:
```bash
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
```
启动完整系统:
```bash
docker compose --env-file .env pull
docker compose --env-file .env up -d
docker compose --env-file .env ps
```
## 6. 进入系统
浏览器访问:
```text
http://服务器IP或域名/
```
如果 `UI_PORT` 不是 `80`,访问:
```text
http://服务器IP或域名:${UI_PORT}/
```
默认后台账号:
- 用户名:`admin`
- 密码:`admin123`
首次登录后请立即修改管理员密码,并检查系统管理、养老业务菜单是否正常显示。
## 7. 升级与验证
升级:
```bash
cd /opt/zzyl/compose
docker compose --env-file .env pull
docker compose --env-file .env up -d
docker image prune -f
```
验证:
```bash
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`