Ruby& Redis / Skidekiq URI :: InvalidURIError:方案redis不接受注册表部分:bsc_redis:6379(或错误的主机名?)

时间:2017-08-14 11:59:36

标签: ruby-on-rails docker redis docker-compose sidekiq

我的docker服务器上的

我在sidekiq / redis URL URL sepcification上有错误:

Sidekiq.configure_client do |config| config.redis =  { url: "redis://bsc_redis:6379", size: 1 } end

我得到了

  

URI :: InvalidURIError:方案redis不接受注册表部分:   bsc_redis:6379(或错误的主机名?)来自   /usr/local/lib/ruby/2.0.0/uri/generic.rb:214:in initialize' from /usr/local/lib/ruby/2.0.0/uri/common.rb:218:in new'来自   /usr/local/lib/ruby/2.0.0/uri/common.rb:218:in parse' from /usr/local/lib/ruby/2.0.0/uri/common.rb:747:in解析'来自   /usr/local/bundle/gems/sidekiq-4.2.9/lib/sidekiq/redis_connection.rb:86:in   log_info' from /usr/local/bundle/gems/sidekiq-4.2.9/lib/sidekiq/redis_connection.rb:20:in 创建'来自   /usr/local/bundle/gems/sidekiq-4.2.9/lib/sidekiq.rb:131:in redis=' from (irb):4:in阻止irb_binding'来自   /usr/local/bundle/gems/sidekiq-4.2.9/lib/sidekiq.rb:83:in   configure_client' from (irb):4 from /usr/local/bundle/gems/railties-3.2.13/lib/rails/commands/console.rb:47:in 从'开始'   /usr/local/bundle/gems/railties-3.2.13/lib/rails/commands/console.rb:8:in   来自script / rails的start' from /usr/local/bundle/gems/railties-3.2.13/lib/rails/commands.rb:41:in :6:require' from script/rails:6:in'

但是,当我指定 bsc_redis 容器的IP地址时,它可以工作:

Sidekiq.configure_client do |config| config.redis =  { url: "redis://172.18.0.5:6379", size: 1 } end
=> {:url=>"redis://172.18.0.5:6379", :size=>1}

当我从rails容器中ping bsc_redis时,它从172.18.0.5开始响应。我找不到任何问题,为什么会这样。

有什么想法吗?

谢谢

2 个答案:

答案 0 :(得分:1)

尝试使用

config.redis = { url: "redis://bsc_redis:6379/0"}

config.redis = { host: "bcs_redis", port: 6379, db: 0}

两者都有效,但我想可能存在一些问题,因为在第一个基于docker的dns中,sidekiq处理不好

答案 1 :(得分:0)

在docker上,只有这个对我有用

config.redis = { host: "bcs_redis", port: 6379, db: 0}