实测有效!一台服务器上同时启动Dify和Ragflow时,redis容器冲突解决方法。

我在同一台机器上同时启动 Ragflow 和 Dify 时,出现了 Redis 容器冲突的问题。表现为:当两个服务都启动后,其中一个服务的 Redis 容器会被删除,导致该服务无法正常访问。此外,在 Dify 的 Docker 目录下执行 docker compose down 时,会删除 Ragflow 的 Redis 容器。

问题原因:

起初,我怀疑是端口冲突或容器名称冲突导致的问题。然而,经过进一步排查,发现根本原因在于 Docker Compose 未指定项目名称

Docker Compose 使用 项目名称 来隔离不同的项目环境。

默认情况下,项目名称是 docker-compose.yml 文件所在目录的名称。由于 Ragflow 和 Dify 的 docker-compose.yml 文件都位于各自项目目录的 docker/ 目录下,导致两个服务的容器未能被有效隔离,从而引发冲突。

解决方案:

ragflow 基础docker服务启动方式不变。

dify启动时候要通过 -p 参数显式指定项目名称!!!

详细步骤:

拿我自己举例。

ragflow我是源码启动的,启动基础服务这一步就还是在docker目录下运行:

docker compose -f docker-compose-base.yml  up -d  

dify我是docker部署的,直接在docker文件夹下运行:

docker compose -p dify_docker up -d

这样两个项目的相关docker服务应该就都启动成功了。

关于端口会不会冲突的问题:

成功后使用

docker ps -a --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}" | grep redis

查看这两个容器状态输出如下:

  • dify_docker-redis-1 容器只暴露了容器内部的 6379 端口,但没有映射到主机端口(6379/tcp 表示仅容器内部使用)。

  • ragflow-redis 容器将容器内部的 6379 端口映射到了主机的 6379 端口。

ragflow-redis 占用了主机的 6379 端口,那么其他容器不能再映射到主机的 6379 端口,但 dify_docker-redis-1 没有映射到主机端口,因此不会冲突。

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值