How to connect django to docker redis container?

Viewed 8197

I am trying to connect django to docker redis container

Here is my docker file

FROM        ubuntu:14.04
RUN         apt-get update && apt-get install -y redis-server
EXPOSE      6379
ENTRYPOINT  ["/usr/bin/redis-server"]

Here is the result of docker ps -a

4f7eaeb2761b        /redis          "/usr/bin/redis-serve"   16 hours ago        Up 16 hours               6379/tcp            redis

Here is a quick sanity check that redis is working inside docker container

 docker exec -ti redis bash

 root@4f7eaeb2761b:/# redis-cli ping
 PONG
 root@4f7eaeb2761b:/# redis-cli
 127.0.0.1:6379> exit

Here is my Django settings.py

CACHES = {
    'default': {
        'BACKEND': 'redis_cache.RedisCache',
        'LOCATION': 'localhost:6379',
    },
}

Here is my view

from django.shortcuts import render
from django.template import loader
from django.http import HttpResponse
from django.views.decorators.cache import cache_page

@cache_page(60 * 15)
def index(request):
    template = loader.get_template('./index.html')

    return HttpResponse(template.render())

Here is alternative redis access

import redis

def index(request):
    r = redis.StrictRedis(host='localhost', port=6379, db=0)
    print r # this line doesn't cause error
    r.set('foo', 'bar') # this line cause error

    template = loader.get_template('./index.html')

    return HttpResponse(template.render())

I verified that everything work without the @cache_page decorator

When I used decorator I am getting

Error 61 connecting to localhost:6379. Connection refused.

I am not sure how do I expose the docker container besides setting Expose port, any help would be appreciated

Thanks

1 Answers
Related