この_docker-compose.yml
_は正常に動作するようです:
_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アプリは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アプリのRedis URLとは何ですか?
Redisポート(6379)を公開する必要がありますか?
編集:
@Andy Shinnのおかげで、redisのURLは_redis://6379
_になっているはずです。
今、Errno::EINVAL - Invalid argument - connect(2) for 0.0.24.235:6379
を取得しました。これはRedis v 3.2.8に関係している可能性があります。別のバージョンを試して、動作するかどうかを確認します。
編集#2:
3.2.8はローカルマシンのアプリで正常に動作するため、問題ではありません。
問題は、redis
がDockerfileで補間される「変数」であるということです。
ENV REDIS_URL redis:6379
ただし、Redis URLはliteralredis
で始まる必要があります。
そのため、修正プログラムはdocker composeを更新しています。
redis_db:
image: redis:3.2.8
望ましい構成は次のとおりです。
REDIS_URL=redis://redis_db:6379
BMitchとAndy Shinnがこれを理解してくれてありがとう。