ful*_*ris 2 .net network-programming redis docker
我正在尝试获取 .NET API,以便能够连接到我的 docker 网络上的 Redis 实例。这是我所得到的:
my-networkRedis 容器:在自定义 docker 网络上启动并运行localhost:6379my-network(也许?)相关版本控制:
我已经尝试了所有方法,network inspect在网络中添加和删除两个容器,甚至resolveDns=true在我的 .NET 代码中使用特殊的连接字符串标志。无论我做什么我都会得到:
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
Run Code Online (Sandbox Code Playgroud)
我在这里失去了理智,Redis 已localhost:6379在 docker 网络上启动并运行,为什么 .NET 无法连接?
是的,我已经通过了一个自定义的 redis.conf ,它bind 0.0.0.0也有。
感谢 Hans Kilian 的评论,我终于能够联系上了!
尽管看似无限的 Redis + Docker 教程在使用上说了很多localhost:6379,但实际上,当 Redis 在 Docker 网络中运行时,情况并非如此。要查找该 IP,例如使用名为 的容器redis,请发出以下命令:
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' redis
Run Code Online (Sandbox Code Playgroud)
然后,您需要将生成的 IP 地址(端口为 6379)作为连接字符串提供。
太长;博士;
不是:
localhost:6379
但是 Docker 为容器分配了 IP,例如:
172.18.0.7:6379
编辑:您还可以使用容器名称而不是 IP,即:
redis:6379
希望这对任何可能偶然发现这一点的人有所帮助。
| 归档时间: |
|
| 查看次数: |
1998 次 |
| 最近记录: |