草庐IT

ruby-on-rails - Dockerise rails/redis/sidekiq/postgres 项目

coder 2023-07-18 原文

我正在尝试使用 sidekiq、icecast 和 redis 对 Rails 应用程序进行 docker 化以进行流式传输。目前卡在一个错误上,我已经搜索了很长一段时间了。 错误回溯:

Successfully built 64c7adaf977d
Successfully tagged radiofm20_sidekiq:latest
Recreating radiofm20_radiofm_1 ... 
Recreating radiofm20_radiofm_1 ... done
Attaching to radiofm20_sidekiq_1, radiofm20_radiofm_1
sidekiq_1  | 2018-01-17T23:43:11.163Z 1 TID-6x26s INFO: Booting Sidekiq 5.0.5 with redis options {:url=>"redis://redis:6379", :id=>"Sidekiq-server-PID-1"}
sidekiq_1  | getaddrinfo: Name or service not known
sidekiq_1  | /usr/local/bundle/gems/redis-4.0.1/lib/redis/connection/ruby.rb:210:in `getaddrinfo'
sidekiq_1  | /usr/local/bundle/gems/redis-4.0.1/lib/redis/connection/ruby.rb:210:in `connect'
sidekiq_1  | /usr/local/bundle/gems/redis-4.0.1/lib/redis/connection/ruby.rb:293:in `connect'
sidekiq_1  | /usr/local/bundle/gems/redis-4.0.1/lib/redis/client.rb:334:in `establish_connection'
sidekiq_1  | /usr/local/bundle/gems/redis-4.0.1/lib/redis/client.rb:99:in `block in connect'
sidekiq_1  | /usr/local/bundle/gems/redis-4.0.1/lib/redis/client.rb:291:in `with_reconnect'
sidekiq_1  | /usr/local/bundle/gems/redis-4.0.1/lib/redis/client.rb:98:in `connect'
sidekiq_1  | /usr/local/bundle/gems/redis-4.0.1/lib/redis/client.rb:363:in `ensure_connected'
sidekiq_1  | /usr/local/bundle/gems/redis-4.0.1/lib/redis/client.rb:219:in `block in process'
sidekiq_1  | /usr/local/bundle/gems/redis-4.0.1/lib/redis/client.rb:304:in `logging'
sidekiq_1  | /usr/local/bundle/gems/redis-4.0.1/lib/redis/client.rb:218:in `process'
sidekiq_1  | /usr/local/bundle/gems/redis-4.0.1/lib/redis/client.rb:185:in `call_pipelined'
sidekiq_1  | /usr/local/bundle/gems/redis-4.0.1/lib/redis/client.rb:155:in `block in call_pipeline'
sidekiq_1  | /usr/local/bundle/gems/redis-4.0.1/lib/redis/client.rb:291:in `with_reconnect'
sidekiq_1  | /usr/local/bundle/gems/redis-4.0.1/lib/redis/client.rb:153:in `call_pipeline'
sidekiq_1  | /usr/local/bundle/gems/redis-4.0.1/lib/redis.rb:2353:in `block in multi'
sidekiq_1  | /usr/local/bundle/gems/redis-4.0.1/lib/redis.rb:45:in `block in synchronize'
sidekiq_1  | /usr/local/lib/ruby/2.4.0/monitor.rb:214:in `mon_synchronize'
sidekiq_1  | /usr/local/bundle/gems/redis-4.0.1/lib/redis.rb:45:in `synchronize'
sidekiq_1  | /usr/local/bundle/gems/redis-4.0.1/lib/redis.rb:2345:in `multi'
sidekiq_1  | /usr/local/bundle/gems/sidekiq-5.0.5/lib/sidekiq/client.rb:184:in `block in raw_push'
sidekiq_1  | /usr/local/bundle/gems/connection_pool-2.2.1/lib/connection_pool.rb:64:in `block (2 levels) in with'
sidekiq_1  | /usr/local/bundle/gems/connection_pool-2.2.1/lib/connection_pool.rb:63:in `handle_interrupt'
sidekiq_1  | /usr/local/bundle/gems/connection_pool-2.2.1/lib/connection_pool.rb:63:in `block in with'
sidekiq_1  | /usr/local/bundle/gems/connection_pool-2.2.1/lib/connection_pool.rb:60:in `handle_interrupt'
sidekiq_1  | /usr/local/bundle/gems/connection_pool-2.2.1/lib/connection_pool.rb:60:in `with'
sidekiq_1  | /usr/local/bundle/gems/sidekiq-5.0.5/lib/sidekiq/client.rb:183:in `raw_push'
sidekiq_1  | /usr/local/bundle/gems/sidekiq-5.0.5/lib/sidekiq/client.rb:74:in `push'
sidekiq_1  | /usr/local/bundle/gems/sidekiq-5.0.5/lib/sidekiq/worker.rb:143:in `client_push'
sidekiq_1  | /usr/local/bundle/gems/sidekiq-5.0.5/lib/sidekiq/worker.rb:87:in `perform_async'
sidekiq_1  | /app/config/initializers/sidekiq.rb:10:in `<top (required)>'
sidekiq_1  | /usr/local/bundle/gems/activesupport-5.1.4/lib/active_support/dependencies.rb:286:in `load'
sidekiq_1  | /usr/local/bundle/gems/activesupport-5.1.4/lib/active_support/dependencies.rb:286:in `block in load'
sidekiq_1  | /usr/local/bundle/gems/activesupport-5.1.4/lib/active_support/dependencies.rb:258:in `load_dependency'
sidekiq_1  | /usr/local/bundle/gems/activesupport-5.1.4/lib/active_support/dependencies.rb:286:in `load'
sidekiq_1  | /usr/local/bundle/gems/railties-5.1.4/lib/rails/engine.rb:655:in `block in load_config_initializer'
sidekiq_1  | /usr/local/bundle/gems/activesupport-5.1.4/lib/active_support/notifications.rb:168:in `instrument'
sidekiq_1  | /usr/local/bundle/gems/railties-5.1.4/lib/rails/engine.rb:654:in `load_config_initializer'
sidekiq_1  | /usr/local/bundle/gems/railties-5.1.4/lib/rails/engine.rb:612:in `block (2 levels) in <class:Engine>'
sidekiq_1  | /usr/local/bundle/gems/railties-5.1.4/lib/rails/engine.rb:611:in `each'
sidekiq_1  | /usr/local/bundle/gems/railties-5.1.4/lib/rails/engine.rb:611:in `block in <class:Engine>'
sidekiq_1  | /usr/local/bundle/gems/railties-5.1.4/lib/rails/initializable.rb:30:in `instance_exec'
sidekiq_1  | /usr/local/bundle/gems/railties-5.1.4/lib/rails/initializable.rb:30:in `run'
sidekiq_1  | /usr/local/bundle/gems/railties-5.1.4/lib/rails/initializable.rb:59:in `block in run_initializers'
sidekiq_1  | /usr/local/lib/ruby/2.4.0/tsort.rb:228:in `block in tsort_each'
sidekiq_1  | /usr/local/lib/ruby/2.4.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component'
sidekiq_1  | /usr/local/lib/ruby/2.4.0/tsort.rb:422:in `block (2 levels) in each_strongly_connected_component_from'
sidekiq_1  | /usr/local/lib/ruby/2.4.0/tsort.rb:431:in `each_strongly_connected_component_from'
sidekiq_1  | /usr/local/lib/ruby/2.4.0/tsort.rb:421:in `block in each_strongly_connected_component_from'
sidekiq_1  | /usr/local/bundle/gems/railties-5.1.4/lib/rails/initializable.rb:48:in `each'
sidekiq_1  | /usr/local/bundle/gems/railties-5.1.4/lib/rails/initializable.rb:48:in `tsort_each_child'
sidekiq_1  | /usr/local/lib/ruby/2.4.0/tsort.rb:415:in `call'
sidekiq_1  | /usr/local/lib/ruby/2.4.0/tsort.rb:415:in `each_strongly_connected_component_from'
sidekiq_1  | /usr/local/lib/ruby/2.4.0/tsort.rb:349:in `block in each_strongly_connected_component'
sidekiq_1  | /usr/local/lib/ruby/2.4.0/tsort.rb:347:in `each'
sidekiq_1  | /usr/local/lib/ruby/2.4.0/tsort.rb:347:in `call'
sidekiq_1  | /usr/local/lib/ruby/2.4.0/tsort.rb:347:in `each_strongly_connected_component'
sidekiq_1  | /usr/local/lib/ruby/2.4.0/tsort.rb:226:in `tsort_each'
sidekiq_1  | /usr/local/lib/ruby/2.4.0/tsort.rb:205:in `tsort_each'
sidekiq_1  | /usr/local/bundle/gems/railties-5.1.4/lib/rails/initializable.rb:58:in `run_initializers'
sidekiq_1  | /usr/local/bundle/gems/railties-5.1.4/lib/rails/application.rb:353:in `initialize!'
sidekiq_1  | /app/config/environment.rb:5:in `<top (required)>'
sidekiq_1  | /usr/local/bundle/gems/sidekiq-5.0.5/lib/sidekiq/cli.rb:257:in `require'
sidekiq_1  | /usr/local/bundle/gems/sidekiq-5.0.5/lib/sidekiq/cli.rb:257:in `boot_system'
sidekiq_1  | /usr/local/bundle/gems/sidekiq-5.0.5/lib/sidekiq/cli.rb:54:in `run'
sidekiq_1  | /usr/local/bundle/gems/sidekiq-5.0.5/bin/sidekiq:12:in `<top (required)>'
sidekiq_1  | /usr/local/bundle/bin/sidekiq:29:in `load'
sidekiq_1  | /usr/local/bundle/bin/sidekiq:29:in `<main>'
radiofm20_sidekiq_1 exited with code 1
radiofm_1  | /usr/local/bundle/gems/redis-4.0.1/lib/redis/client.rb:344:in `rescue in establish_connection': Error connecting to Redis on 127.0.0.1:6379 (Errno::ECONNREFUSED) (Redis::CannotConnectError)
radiofm_1  |     from /usr/local/bundle/gems/redis-4.0.1/lib/redis/client.rb:328:in `establish_connection'
radiofm_1  |     from /usr/local/bundle/gems/redis-4.0.1/lib/redis/client.rb:99:in `block in connect'
radiofm_1  |     from /usr/local/bundle/gems/redis-4.0.1/lib/redis/client.rb:291:in `with_reconnect'
radiofm_1  |     from /usr/local/bundle/gems/redis-4.0.1/lib/redis/client.rb:98:in `connect'
radiofm_1  |     from /usr/local/bundle/gems/redis-4.0.1/lib/redis/client.rb:363:in `ensure_connected'
radiofm_1  |     from /usr/local/bundle/gems/redis-4.0.1/lib/redis/client.rb:219:in `block in process'
radiofm_1  |     from /usr/local/bundle/gems/redis-4.0.1/lib/redis/client.rb:304:in `logging'
radiofm_1  |     from /usr/local/bundle/gems/redis-4.0.1/lib/redis/client.rb:218:in `process'
radiofm_1  |     from /usr/local/bundle/gems/redis-4.0.1/lib/redis/client.rb:185:in `call_pipelined'
radiofm_1  |     from /usr/local/bundle/gems/redis-4.0.1/lib/redis/client.rb:155:in `block in call_pipeline'
radiofm_1  |     from /usr/local/bundle/gems/redis-4.0.1/lib/redis/client.rb:291:in `with_reconnect'
radiofm_1  |     from /usr/local/bundle/gems/redis-4.0.1/lib/redis/client.rb:153:in `call_pipeline'
radiofm_1  |     from /usr/local/bundle/gems/redis-4.0.1/lib/redis.rb:2353:in `block in multi'
radiofm_1  |     from /usr/local/bundle/gems/redis-4.0.1/lib/redis.rb:45:in `block in synchronize'
radiofm_1  |     from /usr/local/lib/ruby/2.4.0/monitor.rb:214:in `mon_synchronize'
radiofm_1  |     from /usr/local/bundle/gems/redis-4.0.1/lib/redis.rb:45:in `synchronize'
radiofm_1  |     from /usr/local/bundle/gems/redis-4.0.1/lib/redis.rb:2345:in `multi'
radiofm_1  |     from /usr/local/bundle/gems/sidekiq-5.0.5/lib/sidekiq/client.rb:184:in `block in raw_push'
radiofm_1  |     from /usr/local/bundle/gems/connection_pool-2.2.1/lib/connection_pool.rb:64:in `block (2 levels) in with'
radiofm_1  |     from /usr/local/bundle/gems/connection_pool-2.2.1/lib/connection_pool.rb:63:in `handle_interrupt'
radiofm_1  |     from /usr/local/bundle/gems/connection_pool-2.2.1/lib/connection_pool.rb:63:in `block in with'
radiofm_1  |     from /usr/local/bundle/gems/connection_pool-2.2.1/lib/connection_pool.rb:60:in `handle_interrupt'
radiofm_1  |     from /usr/local/bundle/gems/connection_pool-2.2.1/lib/connection_pool.rb:60:in `with'
radiofm_1  |     from /usr/local/bundle/gems/sidekiq-5.0.5/lib/sidekiq/client.rb:183:in `raw_push'
radiofm_1  |     from /usr/local/bundle/gems/sidekiq-5.0.5/lib/sidekiq/client.rb:74:in `push'
radiofm_1  |     from /usr/local/bundle/gems/sidekiq-5.0.5/lib/sidekiq/worker.rb:143:in `client_push'
radiofm_1  |     from /usr/local/bundle/gems/sidekiq-5.0.5/lib/sidekiq/worker.rb:87:in `perform_async'
radiofm_1  |     from /app/config/initializers/sidekiq.rb:10:in `<top (required)>'
radiofm_1  |     from /usr/local/bundle/gems/activesupport-5.1.4/lib/active_support/dependencies.rb:286:in `load'
radiofm_1  |     from /usr/local/bundle/gems/activesupport-5.1.4/lib/active_support/dependencies.rb:286:in `block in load'
radiofm_1  |     from /usr/local/bundle/gems/activesupport-5.1.4/lib/active_support/dependencies.rb:258:in `load_dependency'
radiofm_1  |     from /usr/local/bundle/gems/activesupport-5.1.4/lib/active_support/dependencies.rb:286:in `load'
radiofm_1  |     from /usr/local/bundle/gems/railties-5.1.4/lib/rails/engine.rb:655:in `block in load_config_initializer'
radiofm_1  |     from /usr/local/bundle/gems/activesupport-5.1.4/lib/active_support/notifications.rb:168:in `instrument'
radiofm_1  |     from /usr/local/bundle/gems/railties-5.1.4/lib/rails/engine.rb:654:in `load_config_initializer'
radiofm_1  |     from /usr/local/bundle/gems/railties-5.1.4/lib/rails/engine.rb:612:in `block (2 levels) in <class:Engine>'
radiofm_1  |     from /usr/local/bundle/gems/railties-5.1.4/lib/rails/engine.rb:611:in `each'
radiofm_1  |     from /usr/local/bundle/gems/railties-5.1.4/lib/rails/engine.rb:611:in `block in <class:Engine>'
radiofm_1  |     from /usr/local/bundle/gems/railties-5.1.4/lib/rails/initializable.rb:30:in `instance_exec'
radiofm_1  |     from /usr/local/bundle/gems/railties-5.1.4/lib/rails/initializable.rb:30:in `run'
radiofm_1  |     from /usr/local/bundle/gems/railties-5.1.4/lib/rails/initializable.rb:59:in `block in run_initializers'
radiofm_1  |     from /usr/local/lib/ruby/2.4.0/tsort.rb:228:in `block in tsort_each'
radiofm_1  |     from /usr/local/lib/ruby/2.4.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component'
radiofm_1  |     from /usr/local/lib/ruby/2.4.0/tsort.rb:422:in `block (2 levels) in each_strongly_connected_component_from'
radiofm_1  |     from /usr/local/lib/ruby/2.4.0/tsort.rb:431:in `each_strongly_connected_component_from'
radiofm_1  |     from /usr/local/lib/ruby/2.4.0/tsort.rb:421:in `block in each_strongly_connected_component_from'
radiofm_1  |     from /usr/local/bundle/gems/railties-5.1.4/lib/rails/initializable.rb:48:in `each'
radiofm_1  |     from /usr/local/bundle/gems/railties-5.1.4/lib/rails/initializable.rb:48:in `tsort_each_child'
radiofm_1  |     from /usr/local/lib/ruby/2.4.0/tsort.rb:415:in `call'
radiofm_1  |     from /usr/local/lib/ruby/2.4.0/tsort.rb:415:in `each_strongly_connected_component_from'
radiofm_1  |     from /usr/local/lib/ruby/2.4.0/tsort.rb:349:in `block in each_strongly_connected_component'
radiofm_1  |     from /usr/local/lib/ruby/2.4.0/tsort.rb:347:in `each'
radiofm_1  |     from /usr/local/lib/ruby/2.4.0/tsort.rb:347:in `call'
radiofm_1  |     from /usr/local/lib/ruby/2.4.0/tsort.rb:347:in `each_strongly_connected_component'
radiofm_1  |     from /usr/local/lib/ruby/2.4.0/tsort.rb:226:in `tsort_each'
radiofm_1  |     from /usr/local/lib/ruby/2.4.0/tsort.rb:205:in `tsort_each'
radiofm_1  |     from /usr/local/bundle/gems/railties-5.1.4/lib/rails/initializable.rb:58:in `run_initializers'
radiofm_1  |     from /usr/local/bundle/gems/railties-5.1.4/lib/rails/application.rb:353:in `initialize!'
radiofm_1  |     from /app/config/environment.rb:5:in `<top (required)>'
radiofm_1  |     from config.ru:3:in `require_relative'
radiofm_1  |     from config.ru:3:in `block in <main>'
radiofm_1  |     from /usr/local/bundle/gems/rack-2.0.3/lib/rack/builder.rb:55:in `instance_eval'
radiofm_1  |     from /usr/local/bundle/gems/rack-2.0.3/lib/rack/builder.rb:55:in `initialize'
radiofm_1  |     from config.ru:in `new'
radiofm_1  |     from config.ru:in `<main>'
radiofm_1  |     from /usr/local/bundle/gems/rack-2.0.3/lib/rack/builder.rb:49:in `eval'
radiofm_1  |     from /usr/local/bundle/gems/rack-2.0.3/lib/rack/builder.rb:49:in `new_from_string'
radiofm_1  |     from /usr/local/bundle/gems/rack-2.0.3/lib/rack/builder.rb:40:in `parse_file'
radiofm_1  |     from /usr/local/bundle/gems/rack-2.0.3/lib/rack/server.rb:319:in `build_app_and_options_from_config'
radiofm_1  |     from /usr/local/bundle/gems/rack-2.0.3/lib/rack/server.rb:219:in `app'
radiofm_1  |     from /usr/local/bundle/gems/railties-5.1.4/lib/rails/commands/server/server_command.rb:24:in `app'
radiofm_1  |     from /usr/local/bundle/gems/rack-2.0.3/lib/rack/server.rb:354:in `wrapped_app'
radiofm_1  |     from /usr/local/bundle/gems/railties-5.1.4/lib/rails/commands/server/server_command.rb:80:in `log_to_stdout'
radiofm_1  |     from /usr/local/bundle/gems/railties-5.1.4/lib/rails/commands/server/server_command.rb:42:in `start'
radiofm_1  |     from /usr/local/bundle/gems/railties-5.1.4/lib/rails/commands/server/server_command.rb:135:in `block in perform'
radiofm_1  |     from /usr/local/bundle/gems/railties-5.1.4/lib/rails/commands/server/server_command.rb:130:in `tap'
radiofm_1  |     from /usr/local/bundle/gems/railties-5.1.4/lib/rails/commands/server/server_command.rb:130:in `perform'
radiofm_1  |     from /usr/local/bundle/gems/thor-0.20.0/lib/thor/command.rb:27:in `run'
radiofm_1  |     from /usr/local/bundle/gems/thor-0.20.0/lib/thor/invocation.rb:126:in `invoke_command'
radiofm_1  |     from /usr/local/bundle/gems/thor-0.20.0/lib/thor.rb:387:in `dispatch'
radiofm_1  |     from /usr/local/bundle/gems/railties-5.1.4/lib/rails/command/base.rb:63:in `perform'
radiofm_1  |     from /usr/local/bundle/gems/railties-5.1.4/lib/rails/command.rb:44:in `invoke'
radiofm_1  |     from /usr/local/bundle/gems/railties-5.1.4/lib/rails/commands.rb:16:in `<top (required)>'
radiofm_1  |     from /app/bin/rails:9:in `require'
radiofm_1  |     from /app/bin/rails:9:in `<top (required)>'
radiofm_1  |     from /usr/local/bundle/gems/spring-2.0.2/lib/spring/client/rails.rb:28:in `load'
radiofm_1  |     from /usr/local/bundle/gems/spring-2.0.2/lib/spring/client/rails.rb:28:in `call'
radiofm_1  |     from /usr/local/bundle/gems/spring-2.0.2/lib/spring/client/command.rb:7:in `call'
radiofm_1  |     from /usr/local/bundle/gems/spring-2.0.2/lib/spring/client.rb:30:in `run'
radiofm_1  |     from /usr/local/bundle/gems/spring-2.0.2/bin/spring:49:in `<top (required)>'
radiofm_1  |     from /usr/local/bundle/gems/spring-2.0.2/lib/spring/binstub.rb:31:in `load'
radiofm_1  |     from /usr/local/bundle/gems/spring-2.0.2/lib/spring/binstub.rb:31:in `<top (required)>'
radiofm_1  |     from /app/bin/spring:15:in `require'
radiofm_1  |     from /app/bin/spring:15:in `<top (required)>'
radiofm_1  |     from bin/rails:3:in `load'
radiofm_1  |     from bin/rails:3:in `<main>'
radiofm_1  | => Booting Puma
radiofm_1  | => Rails 5.1.4 application starting in development 
radiofm_1  | => Run `rails server -h` for more startup options
radiofm_1  | Exiting
radiofm20_radiofm_1 exited with code 1

docker 组成:

  radiofm:
    build: 
      context: "./"
      dockerfile: Dockerfile-development
    volumes:
      - .:/src
    env_file:
      - './src/.env'
    environment:
      - REDIS-URL=redis://redis:6379/0
    ports:
      - "3000:3000"

  sidekiq:
    command: sidekiq -C config/sidekiq.yml.erb
    build: .
    volumes:
      - '.:/src'
    env_file:
      - './src/.env'
volumes:
  postgres: 
  sidekiq:

Dockerfile(有点乱,多多包涵)

FROM ruby:2.4.3

ENV DEBIAN_FRONTEND noninteractive
ENV BUILD_PACKAGES curl-dev build-base
RUN apt-get update
RUN apt-get install -y libpq-dev git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev 
RUN apt-get install -y apt-utils

RUN wget -qO - https://www.postgresql.org/media/keys/ACCC4CF8.asc | \
  apt-key add -
RUN echo "deb http://apt.postgresql.org/pub/repos/apt/ jessie-pgdg main" | tee /etc/apt/sources.list.d/yarn.list
RUN apt-get update -qq \
    && apt-get install -y --no-install-recommends \
  postgresql-client-9.6 \
&& rm -rf /var/lib/apt/lists/*t
# Node.js
RUN apt-get install -y nodejs

# for nokogiri
RUN apt-get install -y libxml2-dev libxslt1-dev


# for capybara-webkit
RUN apt-get install -y libqt4-webkit libqt4-dev xvfb


#For Ruby-shout
RUN apt-get install -y libxml2 libxslt1-dev python-dev
RUN apt-get update && apt-get install -y \
curl
RUN apt-get install -y vorbis-tools
RUN apt-get install -y libshout3-dev 


#Icecast
RUN  sh -c "echo deb http://download.opensuse.org/repositories/multimedia:/xiph/xUbuntu_16.04/ ./ >>/etc/apt/sources.list.d/icecast.list"
RUN apt install wget
RUN  wget -qO - http://icecast.org/multimedia-obs.key |  apt-key add -
RUN  apt-get update
RUN  apt-get install icecast2




RUN rm -rf /var/lib/gems/2.4.1/cache/*
#ICECAST DEPENDENCY INSTALL REDIS+DEPENDENCY ICECAST
RUN apt-get install -y redis-server
RUN redis-server --daemonize yes
# RUN redis-server --version
RUN mkdir /app

WORKDIR /app

COPY /src /app


RUN gem install bundler
RUN gem install rake
RUN bundle install

EXPOSE 3000
CMD rails db:create 
CMD rails db:migrate
CMD rails s -p 3000 -b 0.0.0.0

我怎样才能解决这个 getaddrinfo 错误?我的想法是,这是 sidekiq 和 redis 之间的某种连接错误。 我的 sidekiq.rb 配置文件中也有这个

 Sidekiq.configure_server do |config|
      config.redis = { url: 'redis://redis:6379' }
    end

提前致谢。抱歉,如果我的帖子有点模棱两可。随便问什么。 :)

编辑:我使用这个 sidekiq.rb 文件部署了基本的 Rails 应用程序(可以在端口 localhost:3000 上收听它)但是现在我得到了这个错误

web_1  | /usr/local/bundle/gems/redis-4.0.1/lib/redis/connection/ruby.rb:210:in `getaddrinfo': getaddrinfo: Name or service not known (SocketError)

sidekiq.rb 文件:

Sidekiq.configure_server do |config|
  config.redis = { url: 'redis://redis:6379' }
end
Sidekiq.configure_client do |config|
    config.redis = { url: 'redis://redis:6379'}
end

RadioWorker.perform_async
TestWorker.perform_async
JazzWorker.perform_async

更新:修复了 redis 错误现在面临 dockerizing POSTGRES 的问题 在 localhost:3000 上运行应用程序时,我收到此错误消息:https://imgur.com/a/YXw8N

我的 docker-compose 文件:

version: "3.0"
services:
  postgres:
    image: 'postgres:9.6'
    environment:
      - PGDATA=/var/lib/postgresql/data/pgdata
      - POSTGRES_PASSWORD=
      - POSTGRES_USER=postgres
    networks:
      - default
    volumes:
      - 'postgres:/var/lib/postgresql/data'
    labels:
      description: "Postgresql Database"
      service: "postgresql"
  redis:
    image: redis
    ports:
      - 6379:6379
    volumes:
      - 'redis:/data'
    command: redis-server --appendonly yes  
  web:
    build: 
      context: "./"
      dockerfile: Dockerfile-development
    volumes:
      - .:/src
    env_file:
      - './src/.env'
    environment:
      - REDIS-URL=redis://redis:6379/
      - POSTGRES-URL=postgres://postgres:5432/
    depends_on: 
      - redis
      - postgres
    ports:
      - "3000:3000"
volumes:
  redis:
  postgres:

最佳答案

Dockerfile 用于构建镜像,而不是用于运行守护进程。 docker build 的结果是一个静态的东西(docker image)。我建议你直接从 docker-compose.yml 运行 redis

redis:
  image: redis

radiofm:
  (...)
  depends_on: redis
  (...)

PostgreSQL 的情况类似。如果你真的想在容器启动时设置你的图像以运行守护进程,你应该用脚本调整 CMD。

此外,您只能使用一次 CMD。

关于ruby-on-rails - Dockerise rails/redis/sidekiq/postgres 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48311901/

有关ruby-on-rails - Dockerise rails/redis/sidekiq/postgres 项目的更多相关文章

  1. ruby - 如何使用 Nokogiri 的 xpath 和 at_xpath 方法 - 2

    我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div

  2. ruby - 如何从 ruby​​ 中的字符串运行任意对象方法? - 2

    总的来说,我对ruby​​还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用

  3. Ruby 解析字符串 - 2

    我有一个字符串input="maybe(thisis|thatwas)some((nice|ugly)(day|night)|(strange(weather|time)))"Ruby中解析该字符串的最佳方法是什么?我的意思是脚本应该能够像这样构建句子:maybethisissomeuglynightmaybethatwassomenicenightmaybethiswassomestrangetime等等,你明白了......我应该一个字符一个字符地读取字符串并构建一个带有堆栈的状态机来存储括号值以供以后计算,还是有更好的方法?也许为此目的准备了一个开箱即用的库?

  4. ruby - 使用 RubyZip 生成 ZIP 文件时设置压缩级别 - 2

    我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看ruby​​zip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d

  5. ruby - 为什么我可以在 Ruby 中使用 Object#send 访问私有(private)/ protected 方法? - 2

    类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc

  6. ruby-on-rails - 使用 Ruby on Rails 进行自动化测试 - 最佳实践 - 2

    很好奇,就使用ruby​​onrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提

  7. ruby-on-rails - rails : keeping DRY with ActiveRecord models that share similar complex attributes - 2

    这似乎应该有一个直截了当的答案,但在Google上花了很多时间,所以我找不到它。这可能是缺少正确关键字的情况。在我的RoR应用程序中,我有几个模型共享一种特定类型的字符串属性,该属性具有特殊验证和其他功能。我能想到的最接近的类似示例是表示URL的字符串。这会导致模型中出现大量重复(甚至单元测试中会出现更多重复),但我不确定如何让它更DRY。我能想到几个可能的方向...按照“validates_url_format_of”插件,但这只会让验证干给这个特殊的字符串它自己的模型,但这看起来很像重溶液为这个特殊的字符串创建一个ruby​​类,但是我如何得到ActiveRecord关联这个类模型

  8. ruby - 在 Ruby 中使用匿名模块 - 2

    假设我做了一个模块如下:m=Module.newdoclassCendend三个问题:除了对m的引用之外,还有什么方法可以访问C和m中的其他内容?我可以在创建匿名模块后为其命名吗(就像我输入“module...”一样)?如何在使用完匿名模块后将其删除,使其定义的常量不再存在? 最佳答案 三个答案:是的,使用ObjectSpace.此代码使c引用你的类(class)C不引用m:c=nilObjectSpace.each_object{|obj|c=objif(Class===objandobj.name=~/::C$/)}当然这取决于

  9. ruby - 其他文件中的 Rake 任务 - 2

    我试图在一个项目中使用rake,如果我把所有东西都放到Rakefile中,它会很大并且很难读取/找到东西,所以我试着将每个命名空间放在lib/rake中它自己的文件中,我添加了这个到我的rake文件的顶部:Dir['#{File.dirname(__FILE__)}/lib/rake/*.rake'].map{|f|requiref}它加载文件没问题,但没有任务。我现在只有一个.rake文件作为测试,名为“servers.rake”,它看起来像这样:namespace:serverdotask:testdoputs"test"endend所以当我运行rakeserver:testid时

  10. ruby - 如何在 Ruby 中顺序创建 PI - 2

    出于纯粹的兴趣,我很好奇如何按顺序创建PI,而不是在过程结果之后生成数字,而是让数字在过程本身生成时显示。如果是这种情况,那么数字可以自行产生,我可以对以前看到的数字实现垃圾收集,从而创建一个无限系列。结果只是在Pi系列之后每秒生成一个数字。这是我通过互联网筛选的结果:这是流行的计算机友好算法,类机器算法:defarccot(x,unity)xpow=unity/xn=1sign=1sum=0loopdoterm=xpow/nbreakifterm==0sum+=sign*(xpow/n)xpow/=x*xn+=2sign=-signendsumenddefcalc_pi(digits

随机推荐