[英]Connecting Redis localhost from Docker
我有一个 Node.js 应用程序,我在其中使用 Redis,我正在尝试连接 Docker 容器和本地运行的 Redis。
尝试过的解决方案:
vim /usr/local/etc/redis.conf
更新
bind 127.0.0.1
到
bind 0.0.0.0
停止 redis 并重新启动并尝试运行 docker
上面的东西尝试运行docker run -p 4000:8080 -p 6379:6379 -t node-app
以上均无效,出现以下错误
Error: Redis connection to localhost:6379 failed - connect ECONNREFUSED 127.0.0.1:6379
更新:我正在 Mac 上检查它。
如果您使用默认网络( --network="bridge"
),您可以简单地使用 Docker 主机和桥接网络之间网关的 IP 地址,即172.17.0.1
。这是文档。 这适用于所有平台,而不仅仅是在 Mac 上。
在 Dockerfile 中添加这个 Docker v19.03
ENV REDIS_HOST "redis://host.docker.internal"
当我在 node.js 上使用它时
const REDIS_HOST = process.env.REDIS_HOST ? process.env.REDIS_HOST : ""
const client = redis.createClient(REDIS_HOST)
"docker.for.mac.localhost"
而不是localhost or '127.0.0.1'
会起作用:),它在 mac 机器上对我"docker.for.mac.localhost"
。
您只需要在节点应用程序的 config.json 文件中设置 docker 内部主机:
"redisHost": "host.docker.internal"
您无需更改本地的任何 Redis 配置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.