How to connect to a Redis container using Docker Compose?
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.
B Seven
Status: Hood Rails on HTTP/2: Rails HTTP/2 Rack Gems: Rack Crud Rack Routing Capybara Jasmine
Updated on February 23, 2020Comments
-
B Seven about 4 years
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 getErrno::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.