How to connect django to docker redis container?

I am trying to connect django to docker redis container

Here is my docker file

  • Run a docker command from Groovy script
  • npm install fails when running through a docker container
  • Does Jenkins Pipeline Plug-in support Docker Compose?
  • Docker containers with one public IP
  • Docker image dns probem, name solve failed
  • Is it possible to use a Dockerfile not named “Dockerfile” with CircleCI?
  • 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
     root@4f7eaeb2761b:/# redis-cli> exit

    Here is my Django

    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


  • How can I change docker image configurations?
  • Git Repository is not visible on docker hub for automatic build
  • jenkins plugins installed via CLI inside docker container is not showing up in jenkins web console
  • dotnet core web api CI/CD pipeline with docker container
  • Is there a way to run separate set of processes with docker dynamically?
  • connect opscenter and datastax agent runs in two docker containers
  • One Solution collect form web for “How to connect django to docker redis container?”

    The thing to understand here is that the container exposed ports != system exposed ports.

    The Docker container for redis is exposing the port 6379 from the container — that is not the same port in the host system.

    Assuming you’re running docker with:

    docker run -ti redis bash

    By default, Docker will choose a random port in the host to bind to the port the container is exposing. You can check the host ports with the command (will show nothing if no port is exposed):

    docker port CONTAINER_ID

    Instead, you’ll want to run it like this:

    docker run -ti redis bash -p 6379:6379

    This tells Docker to link the 6379 host port to the 6379 container port. Then docker port will show you something like this:

    $ docker port CONTAINER_ID
    6379/tcp ->

    You can also use a docker-compose.yml file to configure this.

    Read more:

    • Brief Primer on Docker networking rules
    • Docker Compose documentation
    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.