From f9c62d1f599159ecca875f35c4831e9ccc6d3ce9 Mon Sep 17 00:00:00 2001 From: shenjianZ Date: Sun, 26 Apr 2026 08:27:35 +0800 Subject: [PATCH] docs: update deployment environment guide --- doc/部署指南.md | 114 +++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 103 insertions(+), 11 deletions(-) diff --git a/doc/部署指南.md b/doc/部署指南.md index c2d6adf..ebc928a 100644 --- a/doc/部署指南.md +++ b/doc/部署指南.md @@ -48,22 +48,29 @@ registry.cn-hangzhou.aliyuncs.com/your-namespace/zzyl-admin:latest registry.cn-hangzhou.aliyuncs.com/your-namespace/zzyl-ui:latest ``` -## 4. 服务器目录与环境变量 +## 4. 拉取项目与环境变量 推荐目录: ```bash -mkdir -p /opt/zzyl/compose /opt/zzyl/sql +mkdir -p /site mkdir -p /data/zzyl/{logs,uploadPath} ``` -复制文件到服务器: +如果当前用户没有权限创建 `/site`,请使用 `sudo mkdir -p /site`,并把目录授权给部署用户。 -- `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`,至少修改: +```bash +cd /site +git clone https://github.com/shenjianZ/zhongzhou-elderly-care.git +cd zhongzhou-elderly-care +cp deploy/compose/.env.example deploy/compose/.env +``` + +后续部署都在项目目录 `/site/zhongzhou-elderly-care` 内操作,不需要把 Compose 或 SQL 文件复制到其他目录。 + +编辑 `deploy/compose/.env`,至少修改: - `ZZYL_ADMIN_IMAGE`、`ZZYL_UI_IMAGE` - `UI_PORT`,如果宿主机 Nginx 也监听 80,建议改为 `8080` @@ -74,12 +81,95 @@ mkdir -p /data/zzyl/{logs,uploadPath} 注意:`MYSQL_APP_USER/MYSQL_APP_PASSWORD` 必须与 `MYSQL_USERNAME/MYSQL_PASSWORD` 保持一致。 +### 4.1 环境变量填写要求 + +基础与镜像变量: + +| 变量 | 作用 | 是否必填 | 说明 | +| --- | --- | --- | --- | +| `TZ` | 容器时区 | 否 | 默认 `Asia/Shanghai` | +| `UI_PORT` | 前端对外端口 | 否 | 默认 `80`;宿主机已有 Nginx 时建议改为 `8080` | +| `APP_PORT` | 后端对外端口 | 否 | 默认 `9000`;主要用于排查,前端通过容器网络访问后端 | +| `ZZYL_ADMIN_IMAGE` | 后端镜像地址 | 是 | GitHub Actions 推送的 `zzyl-admin` 镜像 | +| `ZZYL_UI_IMAGE` | 前端镜像地址 | 是 | GitHub Actions 推送的 `zzyl-ui` 镜像 | + +MySQL 变量: + +| 变量 | 作用 | 是否必填 | 说明 | +| --- | --- | --- | --- | +| `MYSQL_PORT` | MySQL 对外端口 | 否 | 默认 `3306`;端口冲突时修改 | +| `MYSQL_DATABASE` | 业务库名 | 否 | 默认 `zzyl` | +| `MYSQL_ROOT_PASSWORD` | MySQL root 密码 | 是 | 首次初始化数据库时使用 | +| `MYSQL_APP_USER` | 应用数据库账号 | 否 | 默认 `zzyl` | +| `MYSQL_APP_PASSWORD` | 应用数据库账号密码 | 是 | MySQL 容器创建应用账号时使用 | +| `MYSQL_URL` | 后端 JDBC 地址 | 否 | 使用 Compose 内置 MySQL 时保留默认即可 | +| `MYSQL_USERNAME` | 后端连接 MySQL 用户名 | 否 | 默认应与 `MYSQL_APP_USER` 一致 | +| `MYSQL_PASSWORD` | 后端连接 MySQL 密码 | 是 | 必须与 `MYSQL_APP_PASSWORD` 一致 | + +Redis 与后端运行变量: + +| 变量 | 作用 | 是否必填 | 说明 | +| --- | --- | --- | --- | +| `REDIS_PORT` | Redis 对外端口 | 否 | 默认 `6379`;端口冲突时修改 | +| `REDIS_HOST` | 后端连接 Redis 主机 | 否 | 使用 Compose 内置 Redis 时保留 `zzyl-redis` | +| `REDIS_PASSWORD` | Redis 密码 | 是 | Redis 容器启动和后端连接都会使用 | +| `REDIS_DATABASE` | Redis 数据库索引 | 否 | 默认 `2` | +| `APP_LOG_DIR` | 后端日志挂载目录 | 否 | 默认 `/data/zzyl/logs` | +| `APP_PROFILE_DIR` | 文件上传挂载目录 | 否 | 默认 `/data/zzyl/uploadPath` | +| `RUOYI_PROFILE` | 后端文件存储路径 | 否 | 应与 `APP_PROFILE_DIR` 保持一致 | +| `TOKEN_SECRET` | 登录令牌签名密钥 | 是 | 生产环境必须改成足够长的随机字符串 | +| `TOKEN_EXPIRE_TIME` | 登录令牌有效期 | 否 | 默认 `3600` 秒 | +| `DRUID_LOGIN_USERNAME` | Druid 监控页用户名 | 否 | 默认 `ruoyi` | +| `DRUID_LOGIN_PASSWORD` | Druid 监控页密码 | 是 | 生产环境必须修改 | +| `DEPT_NURSING_ID` | 护理部门 ID | 否 | 默认 `201`,需与初始化数据中的部门一致 | + +阿里云 OSS 变量: + +| 变量 | 作用 | 是否必填 | 说明 | +| --- | --- | --- | --- | +| `ALIYUN_OSS_DOMAIN` | OSS 访问域名 | 按功能 | 文件访问 URL 拼接使用 | +| `ALIYUN_OSS_ENDPOINT` | OSS API Endpoint | 按功能 | 上传文件时使用 | +| `ALIYUN_OSS_BUCKET` | OSS Bucket 名称 | 按功能 | 上传目标 Bucket | +| `ALIYUN_OSS_REGION` | OSS Region | 按功能 | 例如 `cn-hangzhou` | +| `ALIYUN_OSS_ACCESS_KEY_ID` | OSS AccessKey ID | 按功能 | 上传文件时使用 | +| `ALIYUN_OSS_SECRET_ACCESS_KEY` | OSS AccessKey Secret | 按功能 | 上传文件时使用 | + +说明:OSS 不影响系统启动,但上传文件、图片、健康评估报告等功能需要填写。 + +百度千帆与微信变量: + +| 变量 | 作用 | 是否必填 | 说明 | +| --- | --- | --- | --- | +| `BAIDU_ACCESS_KEY` | 百度千帆 AccessKey | 按功能 | 健康评估 AI 生成时使用 | +| `BAIDU_SECRET_KEY` | 百度千帆 SecretKey | 按功能 | 健康评估 AI 生成时使用 | +| `BAIDU_QIANFAN_MODEL` | 百度千帆模型名 | 按功能 | 默认 `ERNIE-4.0-8K` | +| `WECHAT_MINI_PROGRAM_APP_ID` | 微信小程序 AppID | 按功能 | 小程序登录和获取手机号使用 | +| `WECHAT_MINI_PROGRAM_SECRET` | 微信小程序 Secret | 按功能 | 小程序登录和获取手机号使用 | + +说明:百度千帆和微信不影响后台管理系统启动;未填写时,对应业务功能会失败。 + +华为云 IoTDA/AMQP 变量: + +| 变量 | 作用 | 是否必填 | 说明 | +| --- | --- | --- | --- | +| `HUAWEI_CLOUD_AK` | 华为云 AK | 是 | IoTDA SDK 客户端启动使用 | +| `HUAWEI_CLOUD_SK` | 华为云 SK | 是 | IoTDA SDK 客户端启动使用 | +| `HUAWEI_CLOUD_REGION_ID` | 华为云区域 ID | 是 | 例如 `cn-east-3` | +| `HUAWEI_CLOUD_ENDPOINT` | IoTDA HTTPS 接入地址 | 是 | 设备管理接口使用 | +| `HUAWEI_CLOUD_PROJECT_ID` | 华为云 ProjectId | 是 | IoTDA SDK 鉴权使用 | +| `HUAWEI_CLOUD_AMQP_HOST` | AMQP 接入地址 | 是 | 设备消息消费客户端启动使用 | +| `HUAWEI_CLOUD_AMQP_ACCESS_KEY` | AMQP AccessKey | 是 | AMQP 连接用户名组成部分 | +| `HUAWEI_CLOUD_AMQP_ACCESS_CODE` | AMQP AccessCode | 是 | AMQP 连接密码 | +| `HUAWEI_CLOUD_AMQP_QUEUE_NAME` | AMQP 队列名称 | 是 | 默认通常为 `DefaultQueue` | + +说明:当前后端启动时会自动启动华为云 AMQP 消费客户端,所以 `HUAWEI_CLOUD_*` 不能保留 `change_me` 占位值。 + ## 5. 首次部署 进入部署目录: ```bash -cd /opt/zzyl/compose +cd /site/zhongzhou-elderly-care/deploy/compose docker compose --env-file .env up -d mysql redis ``` @@ -89,8 +179,8 @@ 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 exec -i zzyl-mysql mysql -uroot -p"${MYSQL_ROOT_PASSWORD}" < ../../sql/dev0302.sql +docker exec -i zzyl-mysql mysql -uroot -p"${MYSQL_ROOT_PASSWORD}" zzyl < ../../sql/quartz.sql ``` 启动完整系统: @@ -127,7 +217,9 @@ http://服务器IP或域名:${UI_PORT}/ 升级: ```bash -cd /opt/zzyl/compose +cd /site/zhongzhou-elderly-care +git pull +cd deploy/compose docker compose --env-file .env pull docker compose --env-file .env up -d docker image prune -f