首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Resque-Scheduler与Docker-组合错误连接到localhost上的Redis :6379

使用Resque-Scheduler与Docker-组合错误连接到localhost上的Redis :6379
EN

Stack Overflow用户
提问于 2019-09-09 21:16:05
回答 2查看 3.3K关注 0票数 2

我正在尝试运行我的rails应用程序,resque和redis。使用领班等,我的设置工作得很好,但是当我尝试在Docker中运行时,使用,我得到:

代码语言:javascript
复制
app_1       | 21:03:13 resque.1 | Redis::CannotConnectError: Error connecting to Redis on redis://redis:6379 (SocketError)
app_1       | 21:03:13 resque.1 | Original Exception (Redis::CannotConnectError): Error connecting to Redis on redis://redis:6379 (SocketError)

我的Dockerfile看起来像:

代码语言:javascript
复制
FROM ruby:2.6.3-alpine

RUN apk update && apk add bash build-base libxml2-dev libxslt-dev postgresql postgresql-dev

VOLUME ["/code"]
WORKDIR /code

我的“码头工人”看起来是这样的:

代码语言:javascript
复制
version: '3'
services:
  app:
    build: .
    command:
      - /bin/bash
      - -c
      - |
        bundle check || bundle install
        bundle exec rake db:migrate; rake db:seed
        bundle exec foreman start
    volumes:
      - ./:/code
    ports:
      - "5000:5000"
    depends_on:
      - redis
    environment:
      REDIS_URL: redis://redis/5
  redis:
    image: redis:5.0.5-alpine

我的档案:

代码语言:javascript
复制
web:       bundle exec puma -C config/puma.rb
resque:    bundle exec rake resque:work QUEUE=*
scheduler: bundle exec rake resque:scheduler

我的配置/初始化器/resque.rb

代码语言:javascript
复制
redis_url = ENV["REDIS_URL"] || "redis://localhost:6379"

Redis.current = Redis.new(url: redis_url)
Resque.redis = Redis.current

和我的库/任务/resque.rake

代码语言:javascript
复制
require "resque/tasks"
require "resque/scheduler/tasks"

task "resque:preload" => :environment
namespace :resque do
  task :setup do
    require "resque"

  end

  task setup_schedule: :setup do
    require "resque-scheduler"

    Resque.schedule = YAML.load_file(Rails.root.join("config","schedule.yml"))
  end

  task scheduler: :setup_schedule
end

更新

这个问题似乎是针对Resque的。如果我从我的procfile中删除它,我可以用启动我的应用程序,我可以看到执行重定向的作业并看到它们运行。

但是,调度程序在手动启动或由领班(不使用容器)启动时运行良好,因此我也希望能够在这里工作。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-12 10:37:26

最后从这个答案中得到了一个线索:Docker-compose - Redis at 0.0.0.0 instead of 127.0.0.1

似乎我需要在安装任务和初始化器中设置Resque连接。将Resque.redis = Redis.current添加到我的resque.rake安装任务中,最终使其全部正常工作:

代码语言:javascript
复制
require "resque/tasks"
require "resque/scheduler/tasks"

task "resque:preload" => :environment
namespace :resque do
  task :setup do
    require "resque"

    Resque.redis = Redis.current
  end

  task setup_schedule: :setup do
    require "resque-scheduler"

    Resque.schedule = YAML.load_file(Rails.root.join("config","schedule.yml"))
  end

  task scheduler: :setup_schedule
end
票数 0
EN

Stack Overflow用户

发布于 2019-09-10 00:05:54

从我的头顶上可以看到一些东西:

代码语言:javascript
复制
version: '3'
services:
  app:
    build: .
    command:
      - /bin/bash
      - -c
      - |
        bundle check || bundle install
        bundle exec rake db:migrate; rake db:seed
        bundle exec foreman start
    volumes:
      - ./:/code
    ports:
      - "5000:5000"
    depends_on:
      - redis
    environment:
      REDIS_URL: redis://redis --> try better redis://cache
    links:
      - redis
  redis:
    image: redis:5.0.5-alpine
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57861292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档