Docker Redis Django连接被拒绝

Ole*_*kyi 3 django django-cache redis docker docker-compose

我正在使用Django REST Framework,Django,Postgres作为数据库和Redis作为缓存来编写项目.我想将我的项目停靠.但是Redis不想访问连接.Django设置:

CACHES = {
    'default': {
        'BACKEND': 'django_redis.cache.RedisCache',
        'LOCATION': 'redis://127.0.0.1:6379/',
        'OPTIONS': {
            'CLIENT_CLASS': 'django_redis.client.DefaultClient',
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

泊坞窗,compose.yml:

services:

  postgres:
    image: postgres:latest
    env_file:
      - ./src/main/.env
    volumes:
      - ./scripts/postgres:/docker-entrypoint-initdb.d

  polls:
    build: .
    volumes:
      - .:/code
    env_file:
      - ./src/main/.env
    ports:
      - "8000:8000"
    depends_on:
      - postgres
      - redis
    command: ./scripts/wait_for_it.sh

  redis:
    restart: always
    image: redis:3.2.0
    expose:
      - "6379"
Run Code Online (Sandbox Code Playgroud)

当我向容器运行命令时,会出现以下警告:

polls_cache | 1:M 15 Aug 10:47:36.719 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
polls_cache | 1:M 15 Aug 10:47:36.720 # Server started, Redis version 3.2.0
polls_cache | 1:M 15 Aug 10:47:36.720 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
polls_cache | 1:M 15 Aug 10:47:36.720 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
polls_cache | 1:M 15 Aug 10:47:36.720 * The server is now ready to accept connections on port 6379
Run Code Online (Sandbox Code Playgroud)

当我尝试向我正在使用Redis进行缓存的端点执行GET请求时,会出现异常:

ConnectionError at /question/top/
Error 111 connecting to 127.0.0.1:6379. Connection refused.
...
Run Code Online (Sandbox Code Playgroud)

也许有人有类似的问题?

viv*_*d4v 6

将连接字符串更改为 -

CACHES = {
    'default': {
        'BACKEND': 'django_redis.cache.RedisCache',
        'LOCATION': 'redis://redis:6379/',
        'OPTIONS': {
            'CLIENT_CLASS': 'django_redis.client.DefaultClient',
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

对于民意调查服务容器,127.0.0.1是民意调查容器本身.使用docker compose时,总是可以使用服务名称来访问它们redis polls postgres.