Sidekiq Error connecting to Redis on 127.0.0.1:6379 (Errno::ECONNREFUSED) on docker-compose

I’m trying to run sidekiq worker with Rails. When I try to docker-compose up worker I get the following error:

worker_1 | Error connecting to Redis on 127.0.0.1:6379 (Errno::ECONNREFUSED)
worker_1 | /home/app/Nyvur/vendor/bundle/ruby/2.2.0/gems/redis-3.2.2/lib/redis/client.rb:332:in `rescue in establish_connection'
worker_1 | /home/app/Nyvur/vendor/bundle/ruby/2.2.0/gems/redis-3.2.2/lib/redis/client.rb:318:in `establish_connection'
worker_1 | /home/app/Nyvur/vendor/bundle/ruby/2.2.0/gems/redis-3.2.2/lib/redis/client.rb:94:in `block in connect'
worker_1 | /home/app/Nyvur/vendor/bundle/ruby/2.2.0/gems/redis-3.2.2/lib/redis/client.rb:280:in `with_reconnect'
worker_1 | /home/app/Nyvur/vendor/bundle/ruby/2.2.0/gems/redis-3.2.2/lib/redis/client.rb:93:in `connect'
worker_1 | /home/app/Nyvur/vendor/bundle/ruby/2.2.0/gems/redis-3.2.2/lib/redis/client.rb:351:in `ensure_connected'
worker_1 | /home/app/Nyvur/vendor/bundle/ruby/2.2.0/gems/redis-3.2.2/lib/redis/client.rb:208:in `block in process'
worker_1 | /home/app/Nyvur/vendor/bundle/ruby/2.2.0/gems/redis-3.2.2/lib/redis/client.rb:293:in `logging'
worker_1 | /home/app/Nyvur/vendor/bundle/ruby/2.2.0/gems/redis-3.2.2/lib/redis/client.rb:207:in `process'
worker_1 | /home/app/Nyvur/vendor/bundle/ruby/2.2.0/gems/redis-3.2.2/lib/redis/client.rb:113:in `call'
worker_1 | /home/app/Nyvur/vendor/bundle/ruby/2.2.0/gems/redis-3.2.2/lib/redis.rb:211:in `block in info'
worker_1 | /home/app/Nyvur/vendor/bundle/ruby/2.2.0/gems/redis-3.2.2/lib/redis.rb:57:in `block in synchronize'
worker_1 | /usr/lib/ruby/2.2.0/monitor.rb:211:in `mon_synchronize'
worker_1 | /home/app/Nyvur/vendor/bundle/ruby/2.2.0/gems/redis-3.2.2/lib/redis.rb:57:in `synchronize'
worker_1 | /home/app/Nyvur/vendor/bundle/ruby/2.2.0/gems/redis-3.2.2/lib/redis.rb:210:in `info'
worker_1 | /home/app/Nyvur/vendor/bundle/ruby/2.2.0/gems/sidekiq-4.0.1/lib/sidekiq/cli.rb:71:in `block in run'
worker_1 | /home/app/Nyvur/vendor/bundle/ruby/2.2.0/gems/sidekiq-4.0.1/lib/sidekiq.rb:84:in `block in redis'
worker_1 | /home/app/Nyvur/vendor/bundle/ruby/2.2.0/gems/connection_pool-2.2.0/lib/connection_pool.rb:64:in `block (2 levels) in with'
worker_1 | /home/app/Nyvur/vendor/bundle/ruby/2.2.0/gems/connection_pool-2.2.0/lib/connection_pool.rb:63:in `handle_interrupt'
worker_1 | /home/app/Nyvur/vendor/bundle/ruby/2.2.0/gems/connection_pool-2.2.0/lib/connection_pool.rb:63:in `block in with'
worker_1 | /home/app/Nyvur/vendor/bundle/ruby/2.2.0/gems/connection_pool-2.2.0/lib/connection_pool.rb:60:in `handle_interrupt'
worker_1 | /home/app/Nyvur/vendor/bundle/ruby/2.2.0/gems/connection_pool-2.2.0/lib/connection_pool.rb:60:in `with'
worker_1 | /home/app/Nyvur/vendor/bundle/ruby/2.2.0/gems/sidekiq-4.0.1/lib/sidekiq.rb:81:in `redis'
worker_1 | /home/app/Nyvur/vendor/bundle/ruby/2.2.0/gems/sidekiq-4.0.1/lib/sidekiq/cli.rb:68:in `run'
worker_1 | /home/app/Nyvur/vendor/bundle/ruby/2.2.0/gems/sidekiq-4.0.1/bin/sidekiq:13:in `<top (required)>'
worker_1 | /home/app/Nyvur/vendor/bundle/ruby/2.2.0/bin/sidekiq:23:in `load'
worker_1 | /home/app/Nyvur/vendor/bundle/ruby/2.2.0/bin/sidekiq:23:in `<main>'
nyvur_worker_1 exited with code 1

Here’s my docker-compose file:

  • docker-py: Accessing output of python script run in ENTRYPOINT command
  • JVM memory settings in docker container in AWS beanstalk
  • Deploying containerised node.JS application through mesos-marathon
  • Docker image environment variable dependencies
  • Can I access the host (OS X) filesystem from the boot2docker VM?
  • How to modify a config file of tomcat docker container using ansible?
  • web: &app_base
      build: .
      ports:
        - "80:80"
      volumes:
        - .:/Nyvur
      command: /usr/bin/start_server.sh
      links:
        - postgres
        - mongo
        - redis
      environment: &app_environment
        SIDEKIQ_CONCURRENCY: 50
        SIDEKIQ_TIMEOUT: 10
        ENABLE_DEBUG_SERVER: true
        RACK_ENV: production
        RAILS_ENV: production
    
    worker:
      build: .
      volumes:
        - .:/Nyvur
      ports: []
      links:
        - postgres
        - mongo
        - redis
      command: bundle exec sidekiq -c 50
    
    postgres:
      image: postgres:9.1
      ports:
        - "5432:5432"
      environment:
        LC_ALL: C.UTF-8
        POSTGRES_DB: Nyvur_production
        POSTGRES_USER: postgres
        POSTGRES_PASSWORD: 3x1mpl3
    
    mongo:
      image: mongo:3.0.7
      ports:
        - "27017:27017"
    
    redis:
      image: redis
      ports:
        - "6379:6379"
    

    My Dockerfile:

    FROM phusion/passenger-customizable
    MAINTAINER VodkaMD <support@nyvur.com>
    ENV RACK_ENV="production" RAILS_ENV="production"
    SECRET_KEY_BASE="e09afa8b753cb175bcef7eb5f737accd02a4c16d9b6e5d475943605abd4277cdf47c488812d21d9c7117efd489d876f34be52f7ef7e88b21759a079339b198ce"
    ENV HOME /root
    CMD ["/sbin/my_init"]
    
    RUN /pd_build/utilities.sh
    RUN /pd_build/ruby2.2.sh
    RUN /pd_build/python.sh
    RUN /pd_build/nodejs.sh
    RUN /pd_build/redis.sh
    RUN /pd_build/memcached.sh
    RUN apt-get update && apt-get install -y vim nano dialog net-tools build-essential wget libpq-dev git
    RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
    # RUN mkdir /etc/nginx/ssl
    # RUN openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.crt
    RUN rm -f /etc/service/nginx/down
    RUN rm -f /etc/service/redis/down
    RUN rm -f /etc/service/sshd/down
    RUN rm -f /etc/service/memcached/down
    WORKDIR /tmp
    ADD Gemfile /tmp/
    ADD Gemfile.lock /tmp/
    RUN mkdir /home/app/Nyvur
    ADD . /home/app/Nyvur
    RUN chown -R app:app /home/app/Nyvur
    WORKDIR /home/app/Nyvur
    RUN bundle install --deployment
    RUN bundle exec rake assets:precompile
    RUN rm /etc/nginx/sites-enabled/default
    COPY config/nginx/nginx_nyvur.conf /etc/nginx/sites-enabled/nginx_nyvur.conf
    ADD config/nginx/postgres-env.conf /etc/nginx/main.d/postgres-env.conf
    ADD config/nginx/rails-env.conf /etc/nginx/main.d/rails-env.conf
    ADD config/nginx/start_server.sh /usr/bin/start_server.sh
    RUN chmod +x /usr/bin/start_server.sh
    RUN mkdir -p /home/app/Nyvur/tmp/pids
    RUN mkdir -p /home/app/Nyvur/tmp/sockets
    RUN mkdir -p /home/app/Nyvur/log
    RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
    EXPOSE 80 443 9292
    

    I’ve tried different configurations, I’ve checked other builds, but the problem still persists, So far, Sidekiq runs well outside of Docker.

  • Postgres docker-image won't run and won't start [closed]
  • Dockerfile COPY wildcard to only match files, not folders
  • Sass is not found for gulp-ruby-sass within Docker container
  • Can a container with STATUS “Exited (-1)” be fixed?
  • how to create docker restricted network
  • Access host webcam using cvlc in Docker
  • 3 Solutions collect form web for “Sidekiq Error connecting to Redis on 127.0.0.1:6379 (Errno::ECONNREFUSED) on docker-compose”

    Error connecting to Redis on 127.0.0.1:6379 (Errno::ECONNREFUSED)
    

    Your app tries to connect on the localhost interface of the container it is running in, but redis is running in a different container.

    Modify your app config to use the link name of the redis container (redis in your case) as hostname for the connection.

    Check if your redis server is running, start redis by using the following command in the terminal:

    redis-server
    

    Just start your redis server by using redis-server command.
    After start sidekiq

    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.