This docker-compose.yml
seems to work OK:
version: '3' services: web: image: web-app command: bundle exec rackup ports: - "9292:9292" links: - redis redis: image: redis
Command:
docker build -t web-app .; docker-compose up
The Web App is expecting a REDIS_URL config. Web App Dockerfile:
ENV REDIS_URL redis:6379
It seems that the Web App cannot connect to the Redis:
Redis::CannotConnectError - Error connecting to Redis on 127.0.0.1:6379 (Errno::ECONNREFUSED):
So, what is the Redis URL for the Web App?
Do I need to expose the Redis port (6379)?
EDIT:
Thanks to @Andy Shinn, I see the redis url should be redis://6379
.
Now I get Errno::EINVAL - Invalid argument - connect(2) for 0.0.24.235:6379
. This may have to do with Redis v 3.2.8. I'll try another version and see if it works.
EDIT #2:
3.2.8 works fine with the app on my local machine, so that is not the issue.
Redis is an open-source in-memory datastore used as a database, cache, and even a message broker. Redis can be used easily with docker and docker-compose for local development as a cache to a web application.
The issue is that redis
is "variable" that will be interpolated in the Dockerfile.
ENV REDIS_URL redis:6379
But the Redis URL should start with the literal redis
.
So, the fix is updating the docker compose:
redis_db: image: redis:3.2.8
The desired config is:
REDIS_URL=redis://redis_db:6379
Thanks to BMitch and Andy Shinn for helping me figure this out.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With