[英]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.