我正在尝试获取一个.NET API,以便能够连接到我的扩展坞网络上的Redis示例。以下是我得到的信息:
- Redis容器:在
localhost:6379
的自定义扩展底座网络my-network
上启动并运行 - .NET服务:正在尝试在自定义扩展底座网络
my-network
上启动和运行
(也许?)相关版本控制:
- Abp.RedisCache 5.4.0
- StackExchange.Redis 2.1.58
我尝试了所有方法,network inspect
,向网络添加和删除两个容器,甚至在我的.NET代码中使用特殊的连接字符串标志resolveDns=true
。无论我做什么,我都会得到:
StackExchange.Redis.RedisConnectionException: It was not possible to connect to the redis server(s). UnableToConnect on localhost:6379/Interactive, Initializing/NotStarted, last: NONE, origin: BeginConnectAsync, outstanding: 0, last-read: 0s ago, last-write: 0s ago, keep-alive: 60s, state: Connecting, mgr: 10 of 10 available, last-heartbeat: never, global: 0s ago, v: 2.1.58.34321
我在这里疯了,Redis已经在扩展底座网络上的localhost:6379
启动并运行,为什么.NET不能连接?
是的,我已经通过了一个定制的redis.conf,它也有bind 0.0.0.0
。
1条答案
按热度按时间rsl1atfo1#
多亏了汉斯·基利安的评论,我终于能够连接上了!
尽管Redis+Docker的教程在使用
localhost:6379
时似乎是无限的,但事实上,当Redis在Docker网络中运行时,情况并非如此。要查找该IP,例如使用名为redis
的容器,可以发出以下命令:您需要将结果IP地址(端口为6379)作为您的连接字符串提供。
TL;DR;
不是:
localhost:6379
但 Docker 为集装箱分配了IP,例如:
172.18.0.7:6379
编辑:您也可以使用容器名称而不是IP,即:
redis:6379
希望这篇文章能帮助任何偶然发现这一点的人。