2016-01-11 11 views
20

Railsでsidekiq workerを実行しようとしています。私がきた、Sidekiq Docker-composeで127.0.0.1:6379(Errno :: ECONNREFUSED)のRedisに接続中にエラーが発生しました

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 

私が試した、異なる構成:

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" 

マイDockerfile

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 

はここに私のdocker-composeファイルです:私はdocker-compose up workerにしようとすると、私は次のエラーを取得します他のビルドをチェックしましたが、問題は依然として続きます。これまでのところ、SidekiqはDockerの外でうまく動作します。

答えて

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

実行中のコンテナのローカルホストインターフェイスで接続しようとしましたが、別のコンテナで実行されています。

接続のホスト名として、redisコンテナのリンク名(あなたの場合はredis)を使用するようにアプリの設定を変更します。

+2

ありがとう!私はIPをDocker envのものに置き換え、すべてを再開し、それがうまくいった。 – whatAboutJohn

+0

ドッカーのためにこの設定をどこで設定しますか? –

+0

起動時にredisをインスタンス化するとき(Redis.new)、私は 'ENV ['REDIS_PORT_6379_TCP_ADDR'] ||を持っています。 '0.0.0.0' '、私はそれをDocker外で実行します。 – whatAboutJohn

19

チェックあなたのRedisサーバが実行されている場合、ターミナルで次のコマンドを使用してのRedisを起動します。

redis-server 
+1

ええ、私はかなり素朴でした。私は 'redis:// redis:6379'を指して成功しました。 – whatAboutJohn

+0

私のターミナルで "killall -9 ruby​​"を使うと、これはいつも持っています。 –

-3

だけのRedisサーバコマンドを使用して、Redisのサーバーを起動します。 開始サイドキック後

関連する問題