rails + docker + sidekiq + Error connecting to Redis on 127.0.0.1:6379 (Errno::ECONNREFUSED)

旧时模样 提交于 2019-12-04 19:32:55

问题


I am getting this error while running my rails app with docker and docker-compose Error connecting to Redis on 127.0.0.1:6379 (Errno::ECONNREFUSED)

Please find my Docker file

# Copy the Gemfile as well as the Gemfile.lock and install
# the RubyGems. This is a separate step so the dependencies
# will be cached unless changes to one of those two files
# are made.
COPY Gemfile Gemfile.lock ./
RUN gem install bundler && bundle install --jobs 20 --retry 5

# Copy the main application.
COPY . ./app

# Expose port 3000 to the Docker host, so we can access it
# from the outside.
EXPOSE 3000

# The main command to run when the container starts. Also
# tell the Rails dev server to bind to all interfaces by
# default.
CMD ["bundle", "exec", "rails", "server", "-b", "0.0.0.0"]

Please find my docker-compose.yml file

version: "2"
services:
  redis:
    image: redis
    command: redis-server
    ports:
      - "6379:6379"
  postgres:
    image: postgres:9.4
    ports:
      - "5432"

  app:
    build: .
    command: rails server -p 3000 -b '0.0.0.0'
    volumes:
      - .:/app
    ports:
      - "3000:3000"
    links:
      - postgres
      - redis
      - sidekiq

  sidekiq:
    build: .
    command: bundle exec sidekiq
    depends_on:
      - redis
    volumes:
      - .:/app
    env_file:
      - .env

Thanks in Advance!


回答1:


I use a docker-compose and i add in .env file

REDIS_URL=redis://redis:6379/0



回答2:


Links are not required to enable services to communicate - by default, any service can reach any other service at that service’s name.

According to your docker-compose.yaml file you can access you redis container on 127.0.0.1:6379 only from host machine.

Containers communicate with each other in their network, so you can access your redis container on redis:6379 from rails app container.



来源:https://stackoverflow.com/questions/48802444/rails-docker-sidekiq-error-connecting-to-redis-on-127-0-0-16379-errnoe