云计算百科
云计算领域专业知识百科平台

实测有效!一台服务器上同时启动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 没有映射到主机端口,因此不会冲突。

赞(0)
未经允许不得转载:网硕互联帮助中心 » 实测有效!一台服务器上同时启动Dify和Ragflow时,redis容器冲突解决方法。
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!