# 校园新闻系统部署 ## 加载镜像 ### 镜像目录结构 ---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 # 初始化数据卷 ### 后端服务镜像 镜像来源由星洋智慧提供 超级管理员账号密码:superadmin 123456 #### 镜像加载 ```bash # 递归查找指定目录下的所有镜像文件并加载 schoolNews修改镜像增加标签latest用于docker compose启动 find .docker/schoolNews/images -type f \( -name "*.tar" -o -name "*.tar.gz" -o -name "*.tgz" \) -exec sh -c ' docker load -i "$1" # 获取刚导入的镜像名称和标签 IMAGE_INFO=$(docker images --format "{{.Repository}}:{{.Tag}}" | tail -n1) if [ -n "$IMAGE_INFO" ]; then # 分离仓库名和标签 REPO=$(echo "$IMAGE_INFO" | cut -d: -f1) TAG=$(echo "$IMAGE_INFO" | cut -d: -f2) # 只有当标签不是 latest 时才添加新标签 if [ "$TAG" != "latest" ]; then docker tag "$IMAGE_INFO" "$REPO:latest" echo "Tagged $IMAGE_INFO as $REPO:latest" fi fi ' sh {} \; # 单独镜像加标签 docker tag school-news-xxx:yyyyMMdd_HHmmss school-news-xxx:latest ``` #### 服务启动 ```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 sudo chown -R 1001:1001 ./volumes/app/storage # 新版dify用非root用户启动,需要修改docker卷的权限 ``` ## 配置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-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) #### 修改节点输入、输出相关节点的引用 修改的输入参数有3个,第1个是对话变量的datasets。表示该词对话中,使用了那些知识库。 第2个是工作流输入的query。表示用户输入的对话内容。 第3个是对话变量的dataset_apikey。表示知识库的apikey ![alt text](部署.assets/image-24.png) ![alt text](部署.assets/image-27.png) ![alt text](部署.assets/image-26.png) ![alt text](部署.assets/image-25.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)