Dify/RAGFlow同机docker部署笔记
其实主要是RAGFlow的部署,Dify的部署还是相对比较干净的,但RAGFlow本身就是按独占机器设计的,对于小本生意来说不太友好。
当然dify也不是全无责任,但为了把更改集中在一处,dify这边可以不做更改,就按原版文档部署。有强迫症的话,可以稍微改动一下,启动docker compose
的时候,用docker compose -p dify_docker up -d
,让docker知道这个项目不叫docker
而叫dify_docker
,以便区分;具体原因往下面看就明白了。
开启dify之后,对RAGFlow的部署,大体上是按照文档来的,但需要进行如下改动:
REDIS 端口
.env
中,REDIS_PORT=6379
要改掉,不是6379
就行,因为dify的默认端口也是6379
,应该是会冲突的(我之所以说“应该”是因为冲突还有另一个原因,所以没有测这个是不是其实可以不改)。
RAGFlow的数据储存
RAGFlow的主要数据储存在docker-compose-base.yml
写着,原版就是一个起了名字的系统volume
,而不是映射到了某个相对目录,不太符合我的习惯。因此,我把原来的:
volumes:
esdata01:
driver: local
infinity_data:
driver: local
mysql_data:
driver: local
minio_data:
driver: local
redis_data:
driver: local
改成了:
volumes:
esdata01:
driver: local
driver_opts:
type: none
o: bind
device: base-data/esdata01
infinity_data:
driver: local
driver_opts:
type: none
o: bind
device: base-data/infinity_data
mysql_data:
driver: local
driver_opts:
type: none
o: bind
device: base-data/mysql_data
minio_data:
driver: local
driver_opts:
type: none
o: bind
device: base-data/minio_data
redis_data:
driver: local
driver_opts:
type: none
o: bind
device: base-data/redis_data
然后,base-data
文件夹和他下面的几个子文件夹,需要手动提前建好。
项目名字的冲突
启动命令,不要用docker compose up
,要用docker compose -p dify_docker up -d
;原因是,默认情况下直接docker compose up
,会默认把项目名设为当前文件夹名docker
,而dify那边的默认值也是docker
,所以会冲突。如果不改,症状是后启动的一个启动不起来,或者前一个在后一个启动后开始报错,某些情况下也可能出现短时间内看起来都是正常的情况,但实际可能是两边的数据写一起去了。
注
当然实际上只改一边就行,但直接用docker
作为工程名字终归是不安全的,所以我两边都改了。
注
不用默认项目名字之后,以后所有的docker compose
启动命令,都要加上-p xxxx
,否则是不认这个项目的。
注
如果你是已经出现问题之后才找到我这篇文章,那么注意,更改docker compose
启动命令之后,数据保存路径是改变的,原有的数据没有删但都留在另外的docker volume
里面。这个我没有研究怎么备份和重用,自己折腾吧;能重做就尽量重做吧,否则怕数据有损坏。
RAGFlow屏蔽注册
配置必要的反向代理一类的东西,完成自己账户的注册。
然后,如果是在公网并且不希望别人用,需要屏蔽注册。.env
里面原本有一个REGISTER_ENABLED=1
字段,改成REGISTER_ENABLED=0
,但实际上没有用,大概是什么bug?
所以,如果要屏蔽注册,需要在反向代理上做手脚,以caddy为例,我加了一行:
handle_path /v1/user/register* {
respond "Forbidden" 403
}
这样一来,注册页面还是能打开的,但点注册按钮是无效的,开发者控制台可以看到403报错。
改完配置记得重启caddy,再检验一下。说不定哪天就换成v2
了,这个屏蔽就得跟着改。
RAGFlow的升级
改了这么多东西,现在升级RAGFlow的话,首先得git stash push
把更改暂存,然后git pull
更新代码,然后git stash pop
把更改恢复,如果冲突了还得手动处理一下。
当然也可以自己建一个本地分支。不过实际上只改了这么一点点,应该不是很必要。