gpt4 book ai didi

node.js - 从 Java(Spring Boot)或 Node.js 检查/连接到在 docker 中运行的 Redis

转载 作者:IT王子 更新时间:2023-10-29 05:59:28 24 4
gpt4 key购买 nike

我在 Windows PC 上快速开始使用 Redis

docker run -p 6379:6379 redis

(Redis 没有 Windows 发行版,fork for Windows 不是最新版本)

1:C 10 Sep 08:17:03.635 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 3.2.3 (00000000/0) 64 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 6379
| `-._ `._ / _.-' | PID: 1
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'

...
1:M 10 Sep 08:17:03.644 * The server is now ready to accept connections on port 6379

然后我无法从 Spring Boot 应用程序连接。与 application.properties 类似

spring.redis.host=localhost
spring.redis.port=6379

出错了

Caused by: redis.clients.jedis.exceptions.JedisConnectionException: java.net.ConnectException: Connection refused: connect
at redis.clients.jedis.Connection.connect(Connection.java:164) ~[jedis-2.8.2.jar:na]
at redis.clients.jedis.BinaryClient.connect(BinaryClient.java:80) ~[jedis-2.8.2.jar:na]
at redis.clients.jedis.BinaryJedis.connect(BinaryJedis.java:1677) ~[jedis-2.8.2.jar:na]
at redis.clients.jedis.JedisFactory.makeObject(JedisFactory.java:87) ~[jedis-2.8.2.jar:na]
at org.apache.commons.pool2.impl.GenericObjectPool.create(GenericObjectPool.java:868) ~[commons-pool2-2.4.2.jar:2.4.2]
at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:435) ~[commons-pool2-2.4.2.jar:2.4.2]
at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:363) ~[commons-pool2-2.4.2.jar:2.4.2]
at redis.clients.util.Pool.getResource(Pool.java:49) ~[jedis-2.8.2.jar:na]
... 23 common frames omitted
Caused by: java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) ~[na:1.8.0_45]
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85) ~[na:1.8.0_45]
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345) ~[na:1.8.0_45]
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) ~[na:1.8.0_45]
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) ~[na:1.8.0_45]
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) ~[na:1.8.0_45]
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[na:1.8.0_45]
at java.net.Socket.connect(Socket.java:589) ~[na:1.8.0_45]
at redis.clients.jedis.Connection.connect(Connection.java:158) ~[jedis-2.8.2.jar:na]
... 30 common frames omitted

尝试将 Node.js 与 node_redis 结合使用时例子,我得到了

Error Error: Redis connection to 127.0.0.1:6379 failed - connect ECONNREFUSED

最佳答案

正如您提到的(在评论中),redis 将其图像与 protected-mode 设置为 yes ( see here) 捆绑在一起。

如何绕过保护模式

  • 1) 通过从运行服务器的同一主机连接到 Redis,从环回接口(interface)发送命令“CONFIG SET protected-mode no”禁用保护模式,但是如果这样做,请确保 Redis 无法从互联网公开访问.使用 CONFIG REWRITE 使此更改永久生效。
  • 2) 或者,您可以通过编辑 Redis 配置文件禁用保护模式,并将保护模式选项设置为“否”,然后重新启动服务器。
  • 3) 如果您手动启动服务器(可能用于测试),请使用“--protected-mode no”选项重新启动它。
  • 4) 设置绑定(bind)地址或认证密码。

来源:redis-github

建立自己的形象

  • 您可以通过拉取 redis 并将您自己的 redis.conf 添加到图像来创建自己的图像吗?
  • 或者更新 Dockerfile 中的启动命令以禁用保护模式:CMD [ "redis-server", "--protected-mode", "no"]

您还可以查看包含上述修改建议的 Dockerfile(最后一行):https://github.com/docker-library/redis/blob/23b10607ef1810379d16664bcdb43723aa007266/3.2/Dockerfile

此 Dockerfile 在 Redis issue on github 中提供,它将启动命令替换为 CMD [ "redis-server", "--protected-mode", "no"]。你可以下载这个 Dockerfile 并输入:

$ docker build -t redis-unprotected:latest .
$ docker run -p 6379:6379 redis-unprotected

关于node.js - 从 Java(Spring Boot)或 Node.js 检查/连接到在 docker 中运行的 Redis,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39424559/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com