Railsアプリの実行中にこのエラーが発生します。127.0.0.1:6379でRedisに接続します(Errno :: ECONNREFUSED)
Dockerファイルを見つけてください
# Copy the Gemfile as well as the Gemfile.lock and install
# the RubyGems. This is a separate step so the dependencies
# will be cached unless changes to one of those two files
# are made.
COPY Gemfile Gemfile.lock ./
RUN gem install bundler && bundle install --jobs 20 --retry 5
# Copy the main application.
COPY . ./app
# Expose port 3000 to the Docker Host, so we can access it
# from the outside.
EXPOSE 3000
# The main command to run when the container starts. Also
# tell the Rails dev server to bind to all interfaces by
# default.
CMD ["bundle", "exec", "Rails", "server", "-b", "0.0.0.0"]
Docker-compose.ymlファイルを見つけてください
version: "2"
services:
redis:
image: redis
command: redis-server
ports:
- "6379:6379"
postgres:
image: postgres:9.4
ports:
- "5432"
app:
build: .
command: Rails server -p 3000 -b '0.0.0.0'
volumes:
- .:/app
ports:
- "3000:3000"
links:
- postgres
- redis
- sidekiq
sidekiq:
build: .
command: bundle exec sidekiq
depends_on:
- redis
volumes:
- .:/app
env_file:
- .env
前もって感謝します!
Docker-composeを使用して、.env
ファイルを追加します
REDIS_URL=redis://redis:6379/0
リンク サービスが通信できるようにする必要はありません-デフォルトでは、どのサービスもそのサービスの名前で他のサービスに到達できます。
Docker-compose.yamlファイルによると、ホストマシンからのみ127.0.0.1:6379のredisコンテナーにアクセスできます。
コンテナはネットワーク内で相互に通信するため、redis:6379
のredisコンテナにRailsアプリコンテナからアクセスできます。