Connecting Redis localhost from Docker
Asked Answered
A

4

8

I have a Node.js application where I use Redis, I am trying to connect the Docker container and the locally running Redis.

Tried solutions:

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

    Updated

    bind 127.0.0.1
    

    To

    bind 0.0.0.0
    

    Stopped the redis and start it again and tried running the docker

  2. With the above thing tried running docker run -p 4000:8080 -p 6379:6379 -t node-app

Both above didn't worked getting the below error

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

Update: I am checking it on Mac.

Aude answered 31/1, 2020 at 9:30 Comment(5)
Does this answer your question? From inside of a Docker container, how do I connect to the localhost of the machine?Diegodiehard
docker run -p 8080:8080 -p 6379:6379 --network="bridge" -t node-app getting this error Error starting listen tcp 0.0.0.0:6379: bind: address already in use.Aude
docker run -p 8080:8080 -p 6379:6379 --network="host" -t capacity-node this gives the same error Error: Redis connection to localhost:6379 failed - connect ECONNREFUSED 127.0.0.1:6379Aude
Bind redis instance to localhost instead of 0.0.0.0. Verify you can connect from docker host to redis before starting working with docker. Then stop and rm all running containers of node-app. Finally start docker container docker run --network="host" -t node-app. It should work. Note it is not required to specify exposed ports as with network mode host all container's exposed ports are automatically exposed to docker's host.Diegodiehard
"docker.for.mac.localhost" instead of localhost or '127.0.0.1' will work :), it worked for meAude
A
4

"docker.for.mac.localhost" instead of localhost or '127.0.0.1' will work :), it worked for me on mac machine.

Aude answered 4/2, 2020 at 12:58 Comment(4)
Mac is not mentioned in the question.Actionable
i didn't tagged platform as mac on it, sorry on that. added the info of the platform on the question. Thank you @ActionableAude
Why not simply access your localhost via de Docker0 network interface? From within the container, the ip 172.17.0.1 should point to your machine localhost.Actionable
should but it didn't redis.exceptions.ConnectionError: Error 113 connecting to 172.26.0.1:6379. No route to host.Phanerozoic
E
4

In Dockerfile add this Docker v19.03

ENV REDIS_HOST "redis://host.docker.internal"

when i using it on node.js

const REDIS_HOST = process.env.REDIS_HOST ? process.env.REDIS_HOST : ""
const client = redis.createClient(REDIS_HOST)
Ericson answered 25/8, 2020 at 14:5 Comment(1)
Wouldn't you need the port also?Disestablish
A
2

If you use default networking (--network="bridge"), you could simply use the IP address of the gateway between the Docker host and the bridge network, i.e. 172.17.0.1. Here is the documentation. This would work on all platforms, not only on a Mac.

Actionable answered 18/6, 2020 at 18:59 Comment(0)
M
0

You just need to set the docker internal host in your node app's config.json file:

"redisHost": "host.docker.internal"

You don't need to change any Redis configuration on your local.

Metastasis answered 26/2, 2022 at 15:19 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.