tol*_*lga 2 python django redis docker
Python 和 Redis 在我的本地运行良好。我尝试将项目 Docker 化。
当我docker-compose up时,redis 容器工作正常。
> Server initialized
> Ready to accept connections
Run Code Online (Sandbox Code Playgroud)
但是当我在 POSTMAN 中调用请求时,出现以下错误:
Error 111 connecting to 0.0.0.0:6379. Connection refused.
Run Code Online (Sandbox Code Playgroud)
我的设置:
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://0.0.0.0:6379/1",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的 docker-compose.yml:
redis:
image: bitnami/redis:latest
volumes:
- ./redis.conf:/usr/local/etc/redis/redis.conf
environment:
- ALLOW_EMPTY_PASSWORD=yes
ports:
- "6379:6379"
Run Code Online (Sandbox Code Playgroud)
...以及在 Dockerfile 中:
ENV REDIS_URL=redis://0.0.0.0:6379/1
Run Code Online (Sandbox Code Playgroud)
我缺少什么?
您用于bitnami/redis:latestredis 设置,因此您肯定有另一个服务来docker-compose.yaml定义 django 应用程序,然后链接到该redis容器。
问题就在这里,你用来从你的容器redis://0.0.0.0:6379/1连接到容器,这是不正确的。redisdjango
事实上,如果您没有在 compose 文件中定义任何自定义网络,则所有容器都将位于默认网络中,这意味着您的django容器可以直接使用服务名称访问您的redis容器。
一句话,你应该改变
redis://0.0.0.0:6379/1
Run Code Online (Sandbox Code Playgroud)
到
redis://redis:6379/1
Run Code Online (Sandbox Code Playgroud)
您可能想看看Compose 中的网络
另外,当您公开时6379,更改0.0.0.0docker 主机的 IP 可能是另一种选择。
| 归档时间: |
|
| 查看次数: |
3666 次 |
| 最近记录: |