dify 项目结构

1,626 阅读2分钟

多租户

  • 系统中工作空间,租户,用户。租户和工作空间是对应的,用户在工作空间上工作。用户名分为创建者(owner),管理员(admin),使用者。owner 可通过email 邀请其它用户。agent, dataset,model 这三个东西都是在工作空间上的。要实现多租户就需要实现多工作空间。
  • 社区版没有多租户的入口,但表结构上,每个表都有用户id, 我们需要在accounts(用户表),tenants(租客表),tenant_account_joins(用户-租户关联表)中新添加一条数据,就可以实现多租户的功能。
  • 添加private.pem文件:在 app/api/storage/,有各租户pem 文件,没有这个文件模型设置会报错。

        docker exec -it xxx /bin/bash    //进入docker-api的空间 
        cd storage/privkeys
        cp -r xxx xxx             // 拷贝上个用户的 pem 到当前用户,需要找到上个用户tenant_id, 当前用户tenant_id
    

    注:多租户功能在官方的licence 中是禁止商业使用的。

前端项目

前端项目是web 文件夹, 开发语言是next.js + React。

app\compnents\
   datasets 知识库标签
   explore  探索标签
   tools   工具标签
   header
      \index.tsx  首页

屏幕快照 2024-11-15 下午4.56.18.png

文件夹与页面对应关系如上。

后端项目

controls  是api 接口
services    业务逻辑文件夹
models  数据表对象文件夹
controls\console\
    explore  探索标签
    datasets   知识库标签
    app  工作室标签
    
core  dataset 处理逻辑

探索标签下项目的数据没写在数据表中,是在

contants\recommend_apps.json

修改项目后布署

web, api项目中都有docker 文件夹,使用这个文件夹的设置来打包项目。

打包web 项目

docker build -t lang/dify-web:1.0.0 .   
//在docker文件夹下打包前端项目

docker save -o dify-web.tar lang/dify-web:1.0.0
// 导出镜象到本地,

docker load -i dify-web.tar
// 上传服务器,并导入服务器的docker

前端项目也可用pm2 在服务器上运行

打包api 项目

docker build -t lang/dify-api:1.0.0 .   
//在docker文件夹下打包前端项目

docker save -o dify-api.tar lang/dify-api:1.0.0
// 导出镜象到本地,

docker load -i dify-api.tar
// 上传服务器,并导入服务器的docker

后端项目也可用nohup python 命令运行

agent 导出dsl 问题

目前使用0.6.9 版本,导出的dsl 与最新的0.11 的不兼容,导入会报错。