繁体   English   中英

从 Docker 连接 Redis localhost

[英]Connecting Redis localhost from Docker

我有一个 Node.js 应用程序,我在其中使用 Redis,我正在尝试连接 Docker 容器和本地运行的 Redis。

尝试过的解决方案:

  1. vim /usr/local/etc/redis.conf

    更新

    bind 127.0.0.1

    bind 0.0.0.0

    停止 redis 并重新启动并尝试运行 docker

  2. 上面的东西尝试运行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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM