Este docker-compose.yml parece funcionar bien:
version: '3' services: web: image: web-app command: bundle exec rackup ports: - "9292:9292" links: - redis redis: image: redisDominio:
docker build -t web-app .; docker-compose upLa aplicación web espera una configuración de REDIS_URL. Dockerfile de la aplicación web:
ENV REDIS_URL redis:6379Parece que la aplicación web no puede conectarse a Redis:
Redis::CannotConnectError - Error connecting to Redis on 127.0.0.1:6379 (Errno::ECONNREFUSED):Entonces, ¿cuál es la URL de Redis para la aplicación web?
¿Necesito exponer el puerto Redis (6379)?
EDITAR:
Gracias a @Andy Shinn, veo que la URL de redis debería ser redis://6379 .
Ahora obtengo Errno::EINVAL - Invalid argument - connect(2) for 0.0.24.235:6379 . Esto puede tener que ver con Redis v 3.2.8. Probaré con otra versión a ver si funciona.
EDITAR #2:
3.2.8 funciona bien con la aplicación en mi máquina local, así que ese no es el problema.
El problema es que redis es una "variable" que se interpolará en el Dockerfile.
ENV REDIS_URL redis:6379 Pero la URL de Redis debe comenzar con el literal redis .
Entonces, la solución es actualizar la composición de la ventana acoplable:
redis_db: image: redis:3.2.8La configuración deseada es:
REDIS_URL=redis://redis_db:6379Gracias a BMitch y Andy Shinn por ayudarme a resolver esto.