rails error econnrefused connecting cannotconnecterror ruby-on-rails docker redis sidekiq docker-compose

ruby-on-rails - error - redis server &



Sidekiq Error al conectarse a Redis el 127.0.0.1:6379(Errno:: ECONNREFUSED) en docker-compose (3)

Simplemente inicie su servidor redis usando el comando redis-server . Despues de empezar sidekiq

Estoy tratando de ejecutar un trabajador lateral con Rails. Cuando trato de docker-compose up worker el siguiente 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

Aquí está mi archivo docker-compose :

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"

Mi Dockerfile :

FROM phusion/passenger-customizable MAINTAINER VodkaMD <[email protected]> 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

He intentado diferentes configuraciones, he comprobado otras versiones, pero el problema aún persiste, hasta ahora, Sidekiq funciona bien fuera de Docker.


Verifique si su servidor redis se está ejecutando, inicie redis usando el siguiente comando en el terminal:

redis-server


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

Su aplicación intenta conectarse en la interfaz localhost del contenedor en el que se está ejecutando, pero redis se está ejecutando en un contenedor diferente.

Modifique la configuración de su aplicación para usar el nombre de enlace del contenedor redis ( redis en su caso) como nombre de host para la conexión.