diff --git a/build.bat b/build.bat index 62cc39e..3d01534 100644 --- a/build.bat +++ b/build.bat @@ -153,8 +153,8 @@ cd "%PROJECT_ROOT%" REM 构建后端镜像 echo %INFO% 构建后端镜像... -echo %INFO% 执行: docker build -t school-news-serv:%IMAGE_VERSION% -f docker\Dockerfile.serv . -docker build -t school-news-serv:%IMAGE_VERSION% -f docker\Dockerfile.serv . +echo %INFO% 执行: docker build -t school-news-serv:%IMAGE_VERSION% -f docker\schoolNews\Dockerfile.serv . +docker build -t school-news-serv:%IMAGE_VERSION% -f docker\schoolNews\Dockerfile.serv . if errorlevel 1 ( echo %ERROR% ❌ 后端镜像构建失败 pause @@ -170,8 +170,8 @@ echo. REM 构建前端镜像 echo %INFO% 构建前端镜像... -echo %INFO% 执行: docker build -t school-news-web:%IMAGE_VERSION% -f docker\Dockerfile.web . -docker build -t school-news-web:%IMAGE_VERSION% -f docker\Dockerfile.web . +echo %INFO% 执行: docker build -t school-news-web:%IMAGE_VERSION% -f docker\schoolNews\Dockerfile.web . +docker build -t school-news-web:%IMAGE_VERSION% -f docker\schoolNews\Dockerfile.web . if errorlevel 1 ( echo %ERROR% ❌ 前端镜像构建失败 pause @@ -264,7 +264,7 @@ echo 3. 验证镜像: echo docker images ^| findstr school-news echo. echo 4. 启动服务: -echo cd docker +echo cd docker\schoolNews echo docker-compose up -d echo. echo 5. 查看服务状态: @@ -310,7 +310,7 @@ echo %INFO% 下一步操作: echo 1. 查看部署说明: %DEPLOY_INFO_FILE% echo 2. 传输镜像文件到目标服务器 echo 3. 在目标服务器加载镜像: docker load -i ^<镜像文件^> -echo 4. 启动服务: cd docker ^&^& docker-compose up -d +echo 4. 启动服务: cd docker\schoolNews ^&^& docker-compose up -d echo ========================================== echo. diff --git a/build.sh b/build.sh index dde7a2d..120a4a8 100755 --- a/build.sh +++ b/build.sh @@ -154,8 +154,8 @@ build_base_serv() { log_step "构建后端基础镜像(Base Serv)" cd "${PROJECT_ROOT}" - log_info "执行: docker build -t school-news-base-serv:${IMAGE_VERSION} -f docker/Dockerfile.base-serv ." - if docker build -t school-news-base-serv:${IMAGE_VERSION} -f docker/Dockerfile.base-serv .; then + log_info "执行: docker build -t school-news-base-serv:${IMAGE_VERSION} -f docker/schoolNews/Dockerfile.base-serv ." + if docker build -t school-news-base-serv:${IMAGE_VERSION} -f docker/schoolNews/Dockerfile.base-serv .; then docker tag school-news-base-serv:${IMAGE_VERSION} school-news-base-serv:latest log_info "✅ 后端基础镜像构建成功" log_info " 镜像标签: school-news-base-serv:${IMAGE_VERSION}" @@ -172,8 +172,8 @@ build_mysql() { log_step "构建MySQL镜像" cd "${PROJECT_ROOT}" - log_info "执行: docker build -t school-news-mysql:${IMAGE_VERSION} -f docker/Dockerfile.mysql ." - if docker build -t school-news-mysql:${IMAGE_VERSION} -f docker/Dockerfile.mysql .; then + log_info "执行: docker build -t school-news-mysql:${IMAGE_VERSION} -f docker/schoolNews/Dockerfile.mysql ." + if docker build -t school-news-mysql:${IMAGE_VERSION} -f docker/schoolNews/Dockerfile.mysql .; then docker tag school-news-mysql:${IMAGE_VERSION} school-news-mysql:latest log_info "✅ MySQL镜像构建成功" log_info " 镜像标签: school-news-mysql:${IMAGE_VERSION}" @@ -204,8 +204,8 @@ build_serv() { exit 1 fi - log_info "执行: docker build -t school-news-serv:${IMAGE_VERSION} -f docker/Dockerfile.serv ." - if docker build -t school-news-serv:${IMAGE_VERSION} -f docker/Dockerfile.serv .; then + log_info "执行: docker build -t school-news-serv:${IMAGE_VERSION} -f docker/schoolNews/Dockerfile.serv ." + if docker build -t school-news-serv:${IMAGE_VERSION} -f docker/schoolNews/Dockerfile.serv .; then docker tag school-news-serv:${IMAGE_VERSION} school-news-serv:latest log_info "✅ 后端服务镜像构建成功" log_info " 镜像标签: school-news-serv:${IMAGE_VERSION}" @@ -229,8 +229,8 @@ build_web() { exit 1 fi - log_info "执行: docker build -t school-news-web:${IMAGE_VERSION} -f docker/Dockerfile.web ." - if docker build -t school-news-web:${IMAGE_VERSION} -f docker/Dockerfile.web .; then + log_info "执行: docker build -t school-news-web:${IMAGE_VERSION} -f docker/schoolNews/Dockerfile.web ." + if docker build -t school-news-web:${IMAGE_VERSION} -f docker/schoolNews/Dockerfile.web .; then docker tag school-news-web:${IMAGE_VERSION} school-news-web:latest log_info "✅ 前端服务镜像构建成功" log_info " 镜像标签: school-news-web:${IMAGE_VERSION}" diff --git a/doc/部署.assets/image-1.png b/doc/部署.assets/image-1.png new file mode 100644 index 0000000..b04206f Binary files /dev/null and b/doc/部署.assets/image-1.png differ diff --git a/doc/部署.assets/image-10.png b/doc/部署.assets/image-10.png new file mode 100644 index 0000000..e6b05fc Binary files /dev/null and b/doc/部署.assets/image-10.png differ diff --git a/doc/部署.assets/image-11.png b/doc/部署.assets/image-11.png new file mode 100644 index 0000000..94c6add Binary files /dev/null and b/doc/部署.assets/image-11.png differ diff --git a/doc/部署.assets/image-12.png b/doc/部署.assets/image-12.png new file mode 100644 index 0000000..aff7b82 Binary files /dev/null and b/doc/部署.assets/image-12.png differ diff --git a/doc/部署.assets/image-13.png b/doc/部署.assets/image-13.png new file mode 100644 index 0000000..e9c0855 Binary files /dev/null and b/doc/部署.assets/image-13.png differ diff --git a/doc/部署.assets/image-14.png b/doc/部署.assets/image-14.png new file mode 100644 index 0000000..6146d63 Binary files /dev/null and b/doc/部署.assets/image-14.png differ diff --git a/doc/部署.assets/image-15.png b/doc/部署.assets/image-15.png new file mode 100644 index 0000000..32dfe06 Binary files /dev/null and b/doc/部署.assets/image-15.png differ diff --git a/doc/部署.assets/image-16.png b/doc/部署.assets/image-16.png new file mode 100644 index 0000000..9d17da3 Binary files /dev/null and b/doc/部署.assets/image-16.png differ diff --git a/doc/部署.assets/image-17.png b/doc/部署.assets/image-17.png new file mode 100644 index 0000000..9b4aae2 Binary files /dev/null and b/doc/部署.assets/image-17.png differ diff --git a/doc/部署.assets/image-18.png b/doc/部署.assets/image-18.png new file mode 100644 index 0000000..9595598 Binary files /dev/null and b/doc/部署.assets/image-18.png differ diff --git a/doc/部署.assets/image-19.png b/doc/部署.assets/image-19.png new file mode 100644 index 0000000..a127434 Binary files /dev/null and b/doc/部署.assets/image-19.png differ diff --git a/doc/部署.assets/image-2.png b/doc/部署.assets/image-2.png new file mode 100644 index 0000000..4bd39ee Binary files /dev/null and b/doc/部署.assets/image-2.png differ diff --git a/doc/部署.assets/image-20.png b/doc/部署.assets/image-20.png new file mode 100644 index 0000000..80a845e Binary files /dev/null and b/doc/部署.assets/image-20.png differ diff --git a/doc/部署.assets/image-21.png b/doc/部署.assets/image-21.png new file mode 100644 index 0000000..f76d4ab Binary files /dev/null and b/doc/部署.assets/image-21.png differ diff --git a/doc/部署.assets/image-22.png b/doc/部署.assets/image-22.png new file mode 100644 index 0000000..6ab9dde Binary files /dev/null and b/doc/部署.assets/image-22.png differ diff --git a/doc/部署.assets/image-3.png b/doc/部署.assets/image-3.png new file mode 100644 index 0000000..648713d Binary files /dev/null and b/doc/部署.assets/image-3.png differ diff --git a/doc/部署.assets/image-4.png b/doc/部署.assets/image-4.png new file mode 100644 index 0000000..d3fa1b7 Binary files /dev/null and b/doc/部署.assets/image-4.png differ diff --git a/doc/部署.assets/image-5.png b/doc/部署.assets/image-5.png new file mode 100644 index 0000000..ff47c86 Binary files /dev/null and b/doc/部署.assets/image-5.png differ diff --git a/doc/部署.assets/image-6.png b/doc/部署.assets/image-6.png new file mode 100644 index 0000000..339751b Binary files /dev/null and b/doc/部署.assets/image-6.png differ diff --git a/doc/部署.assets/image-7.png b/doc/部署.assets/image-7.png new file mode 100644 index 0000000..30ada3f Binary files /dev/null and b/doc/部署.assets/image-7.png differ diff --git a/doc/部署.assets/image-8.png b/doc/部署.assets/image-8.png new file mode 100644 index 0000000..0c998e7 Binary files /dev/null and b/doc/部署.assets/image-8.png differ diff --git a/doc/部署.assets/image-9.png b/doc/部署.assets/image-9.png new file mode 100644 index 0000000..9168654 Binary files /dev/null and b/doc/部署.assets/image-9.png differ diff --git a/doc/部署.assets/image.png b/doc/部署.assets/image.png new file mode 100644 index 0000000..46d8e15 Binary files /dev/null and b/doc/部署.assets/image.png differ diff --git a/doc/部署.md b/doc/部署.md new file mode 100644 index 0000000..e56f5aa --- /dev/null +++ b/doc/部署.md @@ -0,0 +1,163 @@ +# 校园新闻系统部署 + +## 加载镜像 + +### 镜像目录结构 + +---docker 根目录 + |---dify # dify的docker目录 + |---dify 官方内容 + |---schoolNews # schoolNews的docker目录 + |---dify # dify工作流的2个yml + |---config # 前后端配置文件 + |---init-db # 数据库标记 + |---mysql # mysql配置 + |---redis # redis配置 + |---nginx # nginx配置 + |---volumes # 数据卷 + |---images # 镜像 + |---docker-compose.yml # docker-compose配置 + |---init-volumes.sh # 初始化数据卷 + + +### 后端服务镜像 +镜像来源由星洋智慧提供 + +#### 镜像加载 +```bash +# 递归查找指定目录下的所有镜像文件并加载 +find .docker/schoolNews/images -type f \( -name "*.tar" -o -name "*.tar.gz" -o -name "*.tgz" \) -exec docker load -i {} \; +``` + +#### 服务启动 +```bash +cd docker/schoolNews +docker-compose up -d +``` + +#### 服务停止 +```bash +cd docker/schoolNews +docker-compose down +``` + +#### 服务重启 +```bash +cd docker/schoolNews +docker-compose restart +``` + +### dify镜像启动 +> 会进行镜像拉取 +```bash +cd docker/dify +docker-compose up -d +``` + +## 配置dify工作流 +> dify登录url 本地ip:8000 + +### 1. 注册账号 + +![alt text](部署.assets/image.png) + +### 2. 导入工作流 +工作流的yaml文件在dify目录下 +![alt text](部署.assets/image-1.png) +安装工作流所需插件。 + +插件说明: +1. 安思派:工作流联网搜索插件 +2. 硅基流动: LLM插件。应该替换成本地部署的模型内容 + +![alt text](部署.assets/image-2.png) + +APIKEY授权 +![alt text](部署.assets/image-3.png) + +### 3. 创建一个测试知识库开启apikey +> APIKEY作用: +给后端服务提供访问dify知识库内容的key权限 + +![alt text](部署.assets/image-4.png) + +![alt text](部署.assets/image-5.png) + +![alt text](部署.assets/image-6.png) + +保存好知识库的apikey,通常以dataset开头。所有知识库共用。 + +### 4.修改动态知识库检索工作流 + +![alt text](部署.assets/image-7.png) + +修改点有2个: +1. 修改http节点post请求的url内容。替换成实际的 ip:8000 +2. 修改Authorization的值,替换为 Bearer + 空格 + 知识库的apikey +![alt text](部署.assets/image-8.png) + +#### 测试 +如图即正常 +![alt text](部署.assets/image-9.png) +![alt text](部署.assets/image-10.png) + +#### 发布 +要同时发布为工具,供工作流使用 +![alt text](部署.assets/image-11.png) + +### 5. 修改思政小帮手工作流 +#### 删除“动态知识库检索”节点,重新添加 +![alt text](部署.assets/image-12.png) +![alt text](部署.assets/image-13.png) + +#### 修改节点输入、输出相关节点的引用 +修改的输入参数有2个,第1个是对话变量的datasets。表示该词对话中,使用了那些知识库。 +第2个是对话变量的query。表示用户输入的对话内容。 +![alt text](部署.assets/image-14.png) + +![alt text](部署.assets/image-15.png) + +![alt text](部署.assets/image-16.png) + +#### 修改知识库处理节点的引用 +直接引用“动态知识库检索”的输出内容,text即可 +![alt text](部署.assets/image-17.png) + +#### 测试发布 +正常对话即正确 +![alt text](部署.assets/image-18.png) + +#### 获取工作流apikey +> 该apikey用于前端进行对话,指定使用该工作流 +![alt text](部署.assets/image-19.png) + +### 6. 配置后端dify配置 +```sql +-- 更新dify.apiBaseUrl +UPDATE `school_news`.`tb_sys_config` SET `config_value` = '实际ip:8000' WHERE `config_key` = 'dify.apiBaseUrl'; + +-- 更新dify.apiKey +UPDATE `school_news`.`tb_sys_config` SET `config_value` = '工作流的apikey' WHERE `config_key` = 'dify.apiKey'; + +-- 更新dify.dify.knowledgeApiKey +UPDATE `school_news`.`tb_sys_config` SET `config_value` = '知识库的apikey' WHERE `config_key` = 'dify.dify.knowledgeApiKey'; + +-- 更新智能体配置的api_key。该api_key的编辑权限前端未开放 +UPDATE `school_news`.`tb_ai_agent_config` SET `dify_api_key`='工作流的apikey' WHERE `id` = 'agent_default_001'; + + +``` + +### 7. 重启后端服务 +即可进行对话 +![alt text](部署.assets/image-20.png) + +## 系统配置 +### 消息模块配置 +#### 短信 +申请阿里云的短信服务,配置到后端 +![alt text](部署.assets/image-21.png) + +#### 邮箱 +开启邮箱服务 +![alt text](部署.assets/image-22.png) \ No newline at end of file diff --git a/docker/.env.example b/docker/schoolNews/.env.example similarity index 100% rename from docker/.env.example rename to docker/schoolNews/.env.example diff --git a/docker/Dockerfile.base-serv b/docker/schoolNews/Dockerfile.base-serv similarity index 100% rename from docker/Dockerfile.base-serv rename to docker/schoolNews/Dockerfile.base-serv diff --git a/docker/Dockerfile.mysql b/docker/schoolNews/Dockerfile.mysql similarity index 100% rename from docker/Dockerfile.mysql rename to docker/schoolNews/Dockerfile.mysql diff --git a/docker/Dockerfile.serv b/docker/schoolNews/Dockerfile.serv similarity index 100% rename from docker/Dockerfile.serv rename to docker/schoolNews/Dockerfile.serv diff --git a/docker/Dockerfile.web b/docker/schoolNews/Dockerfile.web similarity index 100% rename from docker/Dockerfile.web rename to docker/schoolNews/Dockerfile.web diff --git a/docker/config/application.yml b/docker/schoolNews/config/application.yml similarity index 99% rename from docker/config/application.yml rename to docker/schoolNews/config/application.yml index abba141..e8dddb0 100644 --- a/docker/config/application.yml +++ b/docker/schoolNews/config/application.yml @@ -56,7 +56,7 @@ spring: # 短信服务配置 sms: - enabled: false + enabled: true provider: aliyun access-key-id: LTAI5t68do3qVXx5Rufugt3X access-key-secret: 2vD9ToIff49Vph4JQXsn0Cy8nXQfzA diff --git a/docker/config/log4j2-spring.xml b/docker/schoolNews/config/log4j2-spring.xml similarity index 100% rename from docker/config/log4j2-spring.xml rename to docker/schoolNews/config/log4j2-spring.xml diff --git a/docker/config/web-app-config.js b/docker/schoolNews/config/web-app-config.js similarity index 100% rename from docker/config/web-app-config.js rename to docker/schoolNews/config/web-app-config.js diff --git a/docker/config/web/index.ts b/docker/schoolNews/config/web/index.ts similarity index 100% rename from docker/config/web/index.ts rename to docker/schoolNews/config/web/index.ts diff --git a/docker/config/web/vite.config.js b/docker/schoolNews/config/web/vite.config.js similarity index 100% rename from docker/config/web/vite.config.js rename to docker/schoolNews/config/web/vite.config.js diff --git a/docker/docker-compose.yml b/docker/schoolNews/docker-compose.yml similarity index 100% rename from docker/docker-compose.yml rename to docker/schoolNews/docker-compose.yml diff --git a/docker/init-db/01-init-database.sql b/docker/schoolNews/init-db/01-init-database.sql similarity index 100% rename from docker/init-db/01-init-database.sql rename to docker/schoolNews/init-db/01-init-database.sql diff --git a/docker/init-db/README.md b/docker/schoolNews/init-db/README.md similarity index 100% rename from docker/init-db/README.md rename to docker/schoolNews/init-db/README.md diff --git a/docker/init-volumes.bat b/docker/schoolNews/init-volumes.bat similarity index 100% rename from docker/init-volumes.bat rename to docker/schoolNews/init-volumes.bat diff --git a/docker/init-volumes.sh b/docker/schoolNews/init-volumes.sh old mode 100755 new mode 100644 similarity index 67% rename from docker/init-volumes.sh rename to docker/schoolNews/init-volumes.sh index 63ab475..b109bac --- a/docker/init-volumes.sh +++ b/docker/schoolNews/init-volumes.sh @@ -31,13 +31,13 @@ mkdir -p "${VOLUMES_DIR}/nginx/logs" # 复制配置文件模板 echo "复制配置文件模板..." -[ -f redis/redis.conf ] && cp redis/redis.conf "${VOLUMES_DIR}/redis/config/" || echo " ⚠️ redis.conf 不存在" -[ -f mysql/my.cnf ] && cp mysql/my.cnf "${VOLUMES_DIR}/mysql/" || echo " ⚠️ my.cnf 不存在" -[ -f config/application.yml ] && cp config/application.yml "${VOLUMES_DIR}/serv/config/" || echo " ⚠️ application.yml 不存在" -[ -f config/log4j2-spring.xml ] && cp config/log4j2-spring.xml "${VOLUMES_DIR}/serv/config/" || echo " ⚠️ log4j2-spring.xml 不存在" -[ -f config/web-app-config.js ] && cp config/web-app-config.js "${VOLUMES_DIR}/web/config/app-config.js" || echo " ⚠️ web-app-config.js 不存在" -[ -f nginx/nginx.conf ] && cp -r nginx/* "${VOLUMES_DIR}/nginx/config/" || echo " ⚠️ nginx配置 不存在" -[ -d crawler/ ] && cp -r crawler/* "${VOLUMES_DIR}/serv/crawler/" || echo " ⚠️ 爬虫脚本 不存在" +[ -f "${SCRIPT_DIR}/redis/redis.conf" ] && cp "${SCRIPT_DIR}/redis/redis.conf" "${VOLUMES_DIR}/redis/config/" || echo " ⚠️ redis.conf 不存在" +[ -f "${SCRIPT_DIR}/mysql/my.cnf" ] && cp "${SCRIPT_DIR}/mysql/my.cnf" "${VOLUMES_DIR}/mysql/" || echo " ⚠️ my.cnf 不存在" +[ -f "${SCRIPT_DIR}/config/application.yml" ] && cp "${SCRIPT_DIR}/config/application.yml" "${VOLUMES_DIR}/serv/config/" || echo " ⚠️ application.yml 不存在" +[ -f "${SCRIPT_DIR}/config/log4j2-spring.xml" ] && cp "${SCRIPT_DIR}/config/log4j2-spring.xml" "${VOLUMES_DIR}/serv/config/" || echo " ⚠️ log4j2-spring.xml 不存在" +[ -f "${SCRIPT_DIR}/config/web-app-config.js" ] && cp "${SCRIPT_DIR}/config/web-app-config.js" "${VOLUMES_DIR}/web/config/app-config.js" || echo " ⚠️ web-app-config.js 不存在" +[ -f "${SCRIPT_DIR}/nginx/nginx.conf" ] && cp -r "${SCRIPT_DIR}/nginx"/* "${VOLUMES_DIR}/nginx/config/" || echo " ⚠️ nginx配置 不存在" +[ -d "${SCRIPT_DIR}/crawler/" ] && cp -r "${SCRIPT_DIR}/crawler"/* "${VOLUMES_DIR}/serv/crawler/" || echo " ⚠️ 爬虫脚本 不存在" echo "" echo "✅ 目录创建完成:" diff --git a/docker/mysql/my.cnf b/docker/schoolNews/mysql/my.cnf similarity index 100% rename from docker/mysql/my.cnf rename to docker/schoolNews/mysql/my.cnf diff --git a/docker/nginx/conf.d/default.conf b/docker/schoolNews/nginx/conf.d/default.conf similarity index 100% rename from docker/nginx/conf.d/default.conf rename to docker/schoolNews/nginx/conf.d/default.conf diff --git a/docker/nginx/nginx.conf b/docker/schoolNews/nginx/nginx.conf similarity index 100% rename from docker/nginx/nginx.conf rename to docker/schoolNews/nginx/nginx.conf diff --git a/docker/redis/redis.conf b/docker/schoolNews/redis/redis.conf similarity index 100% rename from docker/redis/redis.conf rename to docker/schoolNews/redis/redis.conf diff --git a/schoolNewsServ/admin/src/main/resources/application.yml b/schoolNewsServ/admin/src/main/resources/application.yml index eaa1118..24d1974 100644 --- a/schoolNewsServ/admin/src/main/resources/application.yml +++ b/schoolNewsServ/admin/src/main/resources/application.yml @@ -69,7 +69,7 @@ spring: sms: # 是否启用短信服务(true: 真实发送, false: 模拟模式) # 开发环境建议设置为 false,避免浪费短信费用 - enabled: false + enabled: true # 短信服务商(aliyun: 阿里云, tencent: 腾讯云) provider: aliyun # AccessKey ID(从服务商控制台获取)