Ce docker-compose.yml
Semble fonctionner correctement:
version: '3'
services:
web:
image: web-app
command: bundle exec rackup
ports:
- "9292:9292"
links:
- redis
redis:
image: redis
Commander:
docker build -t web-app .; docker-compose up
L'application Web attend une configuration REDIS_URL. Dockerfile de l'application Web:
ENV REDIS_URL redis:6379
Il semble que la Web App ne puisse pas se connecter au Redis:
Redis::CannotConnectError - Error connecting to Redis on 127.0.0.1:6379 (Errno::ECONNREFUSED):
Alors, quelle est l'URL Redis pour l'application Web?
Dois-je exposer le port Redis (6379)?
MODIFIER:
Grâce à @Andy Shinn, je vois que l'url redis devrait être redis://6379
.
Maintenant, j'obtiens Errno::EINVAL - Invalid argument - connect(2) for 0.0.24.235:6379
. Cela peut être lié à Redis v 3.2.8. Je vais essayer une autre version et voir si cela fonctionne.
EDIT # 2:
3.2.8 fonctionne bien avec l'application sur ma machine locale, ce n'est donc pas le problème.
Le problème est que redis
est une "variable" qui sera interpolée dans le Dockerfile.
ENV REDIS_URL redis:6379
Mais l'URL Redis doit commencer par le littéral redis
.
Ainsi, le correctif met à jour la composition du docker:
redis_db:
image: redis:3.2.8
La configuration souhaitée est:
REDIS_URL=redis://redis_db:6379
Merci à BMitch et Andy Shinn de m'avoir aidé à comprendre cela.