0

I am running Ubuntu and trying to setup dev environment for node app, this is my docker-compose.yml:

version: "2"
services:
  redis:
    image: redis
    ports:
     - "6381:6379"
    volumes:
      - /var/lib/thinklog-queue:/data
  activity-service:
    build:
      context: ./activity-service
    command: yarn dev
    ports:
      - "3001:3001"
    environment:
      REDIS_QUEUE_URL: "redis://redis:6381"
    depends_on:
      - redis

and Dockerfile for the node app looks like this:

FROM node:9
WORKDIR /app
COPY package.json ./
COPY yarn.lock ./
RUN yarn install
COPY . .
EXPOSE 4000
CMD ["yarn", "start"]

I extend Redis connection string from env variable.

and when I run docker-compose build && docker-compose up inside logs I get this output from the node app:

activity-service_1 | Error: Redis connection to redis:6381 failed - connect ECONNREFUSED 172.20.0.2:6381

It appears that setup is right however there is something blocking intern connections to Redis. (inside this docker compose network)

Connections to this Redis instance from outside, e.g other shell session works just fine:

kuno@dell:~/code/THINKLOG/activity-service$ redis-cli -p 6381
127.0.0.1:6381> ping
PONG

I also tried mounting custom config like so (added new item to volume arrays for Redis inside docker-compose.yml):

  - ./redis.conf:/usr/local/etc/redis/redis.conf

which has bind line commented out as well as modifying it to be like so (the last address is one that docker-compose uses internally):

bind 192.168.1.100 10.0.0.1 172.20.0.2

Should I also mount in custom Redis configuration and configure Redis to allow connections within docker network?

1 Answer 1

2

Change port to 6379 in the url REDIS_QUEUE_URL: "redis://redis:6379" 6381 is the port on the host IP not the redis container port.

Sign up to request clarification or add additional context in comments.

1 Comment

Yeah, just realized that and went to answer my own question and boom there you are. You are right, I got this wrong. I should call each of this redis differently inside docker-compose and use different hostname per instance instead of different ports.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.