Write the Code. Change the World.

6月 15

dify 默认的数据库表,不一定是自己想要的。这个时候就需要取修改数据库表。修改数据库表最爽的方式就是用迁移文件。在 dify 原本的迁移目录下新增迁移文件会出现迁移版本错位的问题。比如你当前建立了一个迁移文件,过段时间拉 dify 官网代码合并后,迁移有改动,这个时候就会出现迁移版本对不上。为了解决这个问题,自定义个人迁移目录,新建迁移文件就很有必要了。

现在想给 api_tokens 表新增一个 account_id 字段。因为之前的 api_tokens 表只和 tenant 表进行关联,满足不了需求。

新建自定义迁移文件夹【该思路放弃】

修改 docker-compose.yaml 的 api 的配置。主要修改 volumes,因为默认是没有挂载目录,就会出现在容器中生成的文件在宿主机上没有。

api:
    volumes:
    - ../api:/app/api
    # 匿名卷:让 .venv 目录不被宿主机覆盖,保留镜像内的内容
    - /app/api/.venv

然后启动服务,开始干活。(从尝试到放弃)

# 启动 docker 服务
docker compose up -d

# 进入 api 容器
docker exec -it docker-api-1 bash

# 创建自定义迁移目录
flask db init --directory migrations_custom

# 查看官方迁移当前版本
flask db current

# 给自定义迁移库打基线(7bad07dc267d 是上一步查询出来的)
flask db stamp --directory migrations_custom 7bad07dc267d --purge

从尝试到放弃

想法是很美好,可是执行起来,各种问题就来了。所以,还是放弃自建迁移文件的想法了。既然迁移文件不好使,那就调用 sql 来达到实现修改字段的目的了。

6月 15

拉取 dify 官方源代码构建服务。虽然能跑起来,正常运行。可是很多功能不是自己想要的,或者自己想要更多的功能。这个时候就需要修改源码。 dify 源码都提供了,修改后,重新构建镜像使用不就可以实现愿望了吗。

使用自定义镜像

修改 docker/docker-compose.yaml 文件,删掉官方的镜像,使用本地的镜像构建。前端 web 页面和 api 接口的配置修改。

  api:
    <<: *shared-api-worker-config
    image: user-dify-api:1.14.2
    user: root
    build:
      context: ..
      dockerfile: api/Dockerfile

  web:
    image: user-dify-web:1.14.2
    build:
      context: ..
      dockerfile: web/Dockerfile

这样就好了。如果需要增加环境变量,在 .env 和 .env.example 还有 docker-compose.yaml 中加入就好。 volumes 也看着办。