簡體   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