【发布时间】:2016-03-19 22:09:40
【问题描述】:
我正在尝试将 django 连接到 docker redis 容器
这是我的 docker 文件
FROM ubuntu:14.04
RUN apt-get update && apt-get install -y redis-server
EXPOSE 6379
ENTRYPOINT ["/usr/bin/redis-server"]
这是docker ps -a的结果
4f7eaeb2761b /redis "/usr/bin/redis-serve" 16 hours ago Up 16 hours 6379/tcp redis
这里是 redis 在 docker 容器内工作的快速健全性检查
docker exec -ti redis bash
root@4f7eaeb2761b:/# redis-cli ping
PONG
root@4f7eaeb2761b:/# redis-cli
127.0.0.1:6379> exit
这是我的 Django settings.py
CACHES = {
'default': {
'BACKEND': 'redis_cache.RedisCache',
'LOCATION': 'localhost:6379',
},
}
这是我的看法
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())
这里是替代的redis访问
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())
我验证了没有 @cache_page 装饰器的情况下一切正常
当我使用装饰器时,我得到了
Error 61 connecting to localhost:6379. Connection refused.
除了设置Expose 端口外,我不知道如何公开 docker 容器,任何帮助将不胜感激
谢谢
【问题讨论】:
标签: python django docker redis