连接到redis时出现错误-3:6379,名称解析临时失败

new9mtju  于 2022-11-21  发布在  Redis
关注(0)|答案(1)|浏览(540)

我尝试在FastAPI项目中实现Celery,使用Redis作为代理和后端结果。我成功地构建了应用程序dockercompose。但是当我发送请求时,它引发了Error -3 connecting to redis:6379. Temporary failure in name resolution。以下是我的docker-compose.yaml文件内容。我错过了什么?
顺便问一下,Redis网址末尾的/0是什么?

version: '3.5'

services:
  soar-core:
    container_name: soar-core
    build: .
    stdin_open: true
    tty: true
    restart: on-failure
    ports:
      - 127.0.0.1:8000:8000
    depends_on:
      - mongo
      - redis
    volumes:
      - .:/soar_core
    networks:
      - soar-network
  mongo:
    container_name: mongo
    image: mongo
    restart: always
    ports:
      - 127.0.0.1:27018:27017
    volumes:
      - ./data:/data/db
    networks:
      - soar-network
  redis:
    image: redis:7.0.5
  worker:
    build: .
    command: pipenv run celery --app=soar_core.celery.app worker --loglevel=info
    volumes:
      - .:/soar_core
    environment:
      - CELERY_BROKER_URL=redis://redis:6379/0
      - CELERY_RESULT_BACKEND=redis://redis:6379/0
    depends_on:
      - soar-core
      - redis
  dashboard:
    build: .
    command: pipenv run --app=soar_core.celery.app flower --port=5555 --broker=redis://redis:6379/0
    ports:
      - 5556:5555
    environment:
      - CELERY_BROKER_URL=redis://redis:6379/0
      - CELERY_RESULT_BACKEND=redis://redis:6379/0
    depends_on:
      - soar-core
      - redis
      - worker
networks:
  soar-network:
    driver: bridge

下面是我如何配置celery 。

from celery import Celery
app = Celery(
    name="Celery-App",
    broker="redis://redis:6379/0",
    backend="redis://redis:6379/0",
)
ee7vknir

ee7vknir1#

您的两个服务有一个自定义的networks: [soar-network]块,但其余的没有。组合automatically将这些服务放在它创建的default网络上。
使用default网络没有什么错,我建议删除文件中的所有networks:块,以便每个容器都在该default网络上。
(The redis://.../0指定了数据库的编号,一个Redis服务器可以有多个密钥空间,但它们是用数字而不是名称来标识的。

相关问题