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.
The issue is that
redis
is "variable" that will be interpolated in the Dockerfile.But the Redis URL should start with the literal
redis
.So, the fix is updating the docker compose:
The desired config is:
Thanks to BMitch and Andy Shinn for helping me figure this out.