このdocker-compose.yml
がOKを動作するようです:Docker Composeを使用してRedisコンテナに接続するには?
version: '3'
services:
web:
image: web-app
command: bundle exec rackup
ports:
- "9292:9292"
links:
- redis
redis:
image: redis
コマンド:
docker build -t web-app .; docker-compose up
Web AppではREDIS_URLの設定を期待しています。 WebアプリケーションDockerfile:
ENV REDIS_URL redis:6379
Webアプリケーションは、Redisのに接続できないようです。
Redis::CannotConnectError - Error connecting to Redis on 127.0.0.1:6379 (Errno::ECONNREFUSED):
ので、Web AppのRedisのURLは何ですか?
Redisポート(6379)を公開する必要がありますか?
EDIT:@Andyシンへ
おかげで、私はRedisのURLがredis://6379
する必要があります参照してください。
今度はErrno::EINVAL - Invalid argument - connect(2) for 0.0.24.235:6379
となります。これはRedis v 3.2.8と関係があります。私は別のバージョンを試して、それが動作するかどうかを見てみましょう。
EDIT#2:
3.2.8は私のローカルマシン上のアプリで正常に動作するので、それは問題ではありません。
その時点でredisが実行されていますか?もしあなたがそれらをすべて起動してから、 'red'が開始されたことを知っているなら、少し後に' web'を再起動してください。 – Nanne
このエラーは、 'web'サービスがリンクからの' redis' DNS名である 'REDIS_URL'ではなく、ローカルIP(127.0.0.1)でredisに接続しようとしていると言います。どのような用途ですか? 'REDIS_URL'を使うように設計されていますか?アプリケーション( 'Dockerfile'、' REDIS_URL'などの使用方法)についてもう少し詳しく説明すると役に立ちます。 –
はい、 'REDIS_URL'を使用するように設定されています。これはSinatraアプリです。他のconfigsが動作し、プロダクションに 'REDIS_URL'があります。 –